SCIM est une norme ouverte largement acceptée conçue pour faciliter la gestion des identités d'utilisateurs dans les services et applications cloud. Le SCIM dispose d'un ensemble de contrats par défaut pour les utilisateurs et les groupes qui peut être élargi.
Notre mise en œuvre du SCIM cible la version 2.0 du protocole.
Liens utiles :
Cet article traite de la mise en œuvre du SCIM dans Showpad.
Accéder au SCIM
Il faut considérer la mise en œuvre du SCIM comme une extension de l'API publique de Showpad. L'accès se fait via l'authentification du porteur.
Ce qu'il vous faut pour réussir
- Forfait Showpad Enterprise
- Compte administrateur Showpad
- Un système de gestion d'identité tiers
Le point de terminaison de référence de l'API est :
https://{sous-domaine de l'organisation}.showpad.biz/api/users/scim/v2 |
Chaque demande suivante doit être précédée du point de terminaison de référence.
GET /Schemas
Affiche les données de configuration.
Vous pouvez également les obtenir séparément :
- GET /Schemas/urn:ietf:params:scim:schemas:core:2.0:User
- GET /Schemas/urn:ietf:params:scim:schemas:core:2.0:Group
- GET /Schemas/urn:ietf:params:scim:schemas:extension:enterprise:2.0:User
GET /ResourceTypes
Affiche les types de ressources.
Vous pouvez également les obtenir séparément :
- GET /ResourceTypes/User
- GET /ResourceTypes/Group
GET /ServiceProviderConfig
Affiche une liste des opérations prises en charge dans la mise en œuvre actuelle
User (utilisateur)
« User » cartographie des attributs SCIM à un utilisateur Showpad. Vous pouvez répertorier, filtrer, ajouter, modifier ou supprimer des utilisateurs.
Attributes (attributs)
Les attributs tels que phoneNumbers
, emails
et roles
sont multivalués dans le SCIM mais uniques dans Showpad. Lorsque vous créez ou remplacez un utilisateur et spécifiez plusieurs valeurs, la valeur principale sera cartographiée et les autres valeurs seront supprimées. S'il n'y a pas de valeur principale, c'est la première valeur qui sera utilisée.
groups
est un attribut en lecture seule. Cela vous permet de voir à quels groupes d'utilisateurs un utilisateur appartient. La modification de l'appartenance d'un utilisateur à un groupe doit être gérée via la ressource
Usergroup.
enterprise
dans le tableau correspond au schéma d'entreprise urn:ietf:params:scim:schemas:extension:enterprise:2.0:User
Les attributs emails[0].valueet
username
doivent être uniques dans le système. Sinon, vous obtiendrez une erreur uniqueness
.
emails[0].valuedoit
correspondre au schéma d'une adresse e-mail.
Un nouvel utilisateur sera automatiquement affecté au groupe « Tous les utilisateurs ». C'est un groupe par défaut auquel vous ne pouvez pas annuler l'affectation de l'utilisateur. Si vous souhaitez affecter l'utilisateur à un autre groupe, il doit déjà exister ou être créé via le point de terminaison « Groups ».
Lorsque vous modifiez roles[0].value,sachez
que seuls certains rôles sont pris en charge dans le système :
- owner (voir remarque)
- admin
- manager
- tablet, un rôle par défaut
Remarque : Un seul propriétaire est autorisé dans le système. Vous obtiendrez une erreur uniqueness
si vous essayez d'en créer un autre.
Entitlements (droits)
Lorsqu'un utilisateur a le rôle de manager
, il peut être affecté à des groupes dont il peut coacher les utilisateurs. L'affectation de ces groupes peut se faire au niveau de la section entitlements
en utilisant :
"entitlements": [
{
"value": "22b3d7f8eea74c37d3d140642ccbaeba",
"type": "coach_for_group"
}
]
Il est possible d'affecter plusieurs droits à un seul manager. C'est le seul droit actuellement pris en charge.
Cartographie
Attribut SCIM |
Champ Showpad |
Type d'attribut |
Champ obligatoire | Par défaut |
---|---|---|---|---|
ID | id | Univoque | Vrai | |
userName | userName | Univoque | Vrai | |
name.givenName | firstName | Univoque | Vrai | |
name.familyName | lastName | Univoque | Vrai | |
active | isActive | Univoque | Faux | |
timezone | timezone | Univoque | Faux | |
locale | language | Univoque | Faux | en |
title | companyRole | Univoque | Faux | "" |
externalID | scimId | Univoque | Faux | "" |
entreprise.organization | companyName | Univoque | Faux | Organisation actuelle |
phoneNumbers[0].value | phone | Univoque | Faux | "" |
phoneNumbers[0].type | -- | Univoque | Faux | "work" (lecture seule) |
emails[0].value | Univoque | Vrai | ||
emails[0].type | -- | Univoque | Faux | "work" (lecture seule) |
emails[0].primary | -- | Univoque | Faux | Vrai (lecture seule) |
roles[0].value | userType | Univoque | Faux | "tablet" |
groups | usergroups | Multivalué | Faux | Groupe « Tous les utilisateurs » |
groups.value | usergroups.id | Univoque | Faux | Identifiant du groupe « Tous les utilisateurs » |
groups.display | usergroups.name | Univoque | Faux | « Tous les utilisateurs » |
entitlements | managedUsergroups | Multivalué | Faux | |
entitlements.type | -- | Univoque | Faux | |
entitlements.value | managedUsergroups.id | Univoque | Faux |
POST /Users
Cette commande crée un utilisateur.
POST {{url}}/Users
Accept: application/json
Authorization: Bearer {{token}}
Host: {{host}}
{
"active": true,
"emails": [
{
"primary": true,
"type": "work",
"value": "john.doe@showpad.com"
}
],
"locale": "en",
"name": {
"familyName": "Doe",
"givenName": "John"
},
"entitlements": [
{
"value": "22b3d7f8eea74c37d3d140642ccbaeba",
"type": "coach_for_group"
}
],
"roles": [
{
"value": "manager"
}
],
"timezone": "Europe/Brussels",
"schemas": [
"urn:ietf:params:scim:schemas:core:2.0:User",
"urn:ietf:params:scim:schemas:extension:enterprise:2.0:User"
],
"urn:ietf:params:scim:schemas:extension:enterprise:2.0:User": {
"organization": "John Doe's org"
},
"userName": "john.doe@showpad.com"
}
|
Get /Users/{Id}
Cette commande affiche un utilisateur avec l'identifiant donné.
GET {{url}}/Users/{id}
Accept: application/json
Authorization: Bearer {{token}}
Host: {{host}}
GET {{url}}/Users?startIndex=11&count;=10&filter;=username%20eq%20%22john.doe@showpad.com%22
Accept: application/json
Authorization: Bearer {{token}}
Host: {{host}}
Vous pouvez paginer les résultats à l'aide des paramètres de requête startIndex
et count
.
Par exemple : /Users?startIndex=11&count;=10
affichera la deuxième page d'un résultat à 10 unités par pages.
Filtrage
Vous pouvez filtrer les utilisateurs par champ selon les spécifications. Actuellement, seul l'opérateur EQ
sur username
est pris en charge.
Par exemple : /Users?filter=username%20eq%20"john.doe@showpad.com"
affichera une liste des utilisateurs avec l'attribut username=john.doe@showpad.com
PUT /User/{id}
Cette commande met à jour un utilisateur.
PUT {{url}}/Users/{id}
Accept: application/json
Authorization: Bearer {{token}}
Host: {{host}}
{
"emails": [
{
"value": "john.doe.second@showpad.com"
}
],
"name": {
"familyName": "Doe Second",
"givenName": "John"
},
"userName": "john-doe-second"
}
DELETE /Users/{id}
Cette commande supprime un utilisateur.
DELETE {{url}}/Users/{id}
Accept: application/json
Authorization: Bearer {{token}}
Host: {{host}}
Vous obtiendrez l'erreur 204 No Content
si la suppression est réussie.
PATCH /Users/{id}
Cette fonctionnalité n'a pas été mise en œuvre dans la version SCIM 2.0 de Showpad.
Le groupe cartographie les attributs SCIM à un groupe d'utilisateurs Showpad. Vous pouvez répertorier, filtrer, ajouter, modifier ou supprimer des groupes.
Le groupe « Tous les utilisateurs » existe par défaut et est en lecture seule. Il ne peut être ni modifié ni supprimé.
Il est possible de modifier l'appartenance d'un utilisateur à un groupe en l'ajoutant ou en la supprimant de l'
attribut members. Seul l'attribut
value est pris en compte lors de l'ajout d'un utilisateur à un groupe.
Attribut SCIM |
Champ Showpad |
Type d'attribut |
Champ obligatoire |
Par défaut |
---|---|---|---|---|
ID |
id |
Univoque |
Vrai |
|
displayName |
name |
Univoque |
Vrai |
|
members |
users |
Multivalué |
Faux |
|
members.value |
users.id |
Univoque |
Faux |
|
membres.display |
users.username |
Univoque |
Faux |
|
POST {{url}}/Groups
Accept: application/json
Authorization: Bearer {{token}}
Host: {{host}}
{
"schemas": ["urn:ietf:params:scim:schemas:core:2.0:Group"],
"displayName": "SCIM test group",
"members": [
{
"value": "abcdefgh123456789"
},
{
"value": "123456789abcdefgh"
}
]
}
GET {{url}}/Groups/{id}
Accept: application/json
Authorization: Bearer {{token}}
Host: {{host}}
GET {{url}}/Groups?startIndex=11&count;=10"
Accept: application/json
Authorization: Bearer {{token}}
Host: {{host}}
startIndex
et count
.
Par exemple : /Groups?startIndex=11&count;=10
affichera la deuxième page d'un résultat à 10 unités par pages.
PUT {{url}}/Groups/{id}
Accept: application/json
Authorization: Bearer {{token}}
Host: {{host}}
{
"schemas": ["urn:ietf:params:scim:schemas:core:2.0:Group"],
"displayName": "SCIM test group change",
"members": [
{
"value": "abcdefgh123456789"
},
{
"value": "123456789abcdefgh"
}
]
DELETE {{url}}/Groups/{id}
Accept: application/json
Authorization: Bearer {{token}}
Host: {{host}}
204 No Content
si la suppression a réussi.