Synchronisez les utilisateurs depuis vos systèmes d'identité sur site vers RAM via le protocole SCIM, sécurisé par une autorisation OAuth 2.0.
Prérequis
Nous recommandons qu'un administrateur RAM ou un utilisateur RAM disposant des autorisations de gestion OAuth effectue les opérations décrites dans cette rubrique.
Présentation
SCIM (System for Cross-domain Identity Management) normalise la gestion des identités entre les applications cloud. SCIM 2.0 utilise un modèle objet où tous les objets héritent de Resource avec les attributs
id,externalIdetmeta. La spécification RFC 7643 étend ce modèle avec User, Group et EnterpriseUser. Cette rubrique utilise la ressource User.OAuth (Open Authorization) permet aux applications tierces d'accéder aux ressources des utilisateurs sans exposer leurs identifiants. Alibaba Cloud prend en charge trois types d'applications OAuth : Web Application, Native Application et Server Application. Les applications Web Application et Native Application utilisent OAuth à trois étapes (3-legged), tandis qu'une Server Application utilise OAuth à deux étapes (2-legged). SCIM utilise OAuth à deux étapes pour la communication client-API, comme défini dans la spécification OAuth 2.0. Pour plus d'informations, consultez la page Présentation des applications OAuth.
Endpoint SCIM d'Alibaba Cloud :
https://scim.aliyun.com.Endpoint OAuth d'Alibaba Cloud pour obtenir un
access_token:https://oauth.aliyun.com/v1/token.
Étape 1 : Créer et autoriser une application OAuth
Connectez-vous à la console RAM avec votre compte Alibaba Cloud.
Dans le volet de navigation de gauche, cliquez sur OAuth (Preview).
-
Sous l'onglet Enterprise Applications, cliquez sur Create Application.
Pour le champ Application Type, sélectionnez Server Application. Pour plus de détails, reportez-vous à la section Créer une application.
Après la création, récupérez la valeur
client_iddepuis la page des détails de l'application. -
Cliquez sur le nom de l'application. Sous l'onglet OAuth Scope, cliquez sur Add OAuth Scopes.
Pour le champ OAuth Scope, sélectionnez /acs/scim. Consultez la page Gérer les étendues OAuth pour plus d'informations.
-
Autorisez l'application OAuth.
Sous l'onglet OAuth Scope, cliquez sur Grants.
Sur la page Third-party Application Authorization, sélectionnez Alibaba Cloud Cross-domain Identity Management Service puis cliquez sur Grants.
-
Sous l'onglet App Secrets, cliquez sur Create Secret pour créer un secret d'application.
ImportantLa valeur AppSecretValue n'est affichée qu'une seule fois lors de la création et ne peut pas être récupérée ultérieurement. Enregistrez-la en toute sécurité.
Étape 2 : Synchroniser les données utilisateur
Vous pouvez synchroniser les données utilisateur via un client tel que One Identity, ou directement via les API SCIM.
Client : configurez les paramètres SCIM dans un client comme One Identity pour synchroniser les données utilisateur. Consultez la documentation One Identity.
-
API SCIM : mappez les utilisateurs sur site aux utilisateurs RAM. Vous pouvez créer, supprimer, interroger et mettre à jour les attributs suivants des utilisateurs RAM.
id: ID de l'utilisateur RAM, généré par le serveur et unique au niveau global.-
externalId: ID unique spécifié par le client qui associe un utilisateur RAM à un utilisateur de votre système sur site.RemarqueLes utilisateurs RAM créés via la console ne possèdent pas l'attribut
externalId. userName: nom unique spécifié par le client pour chaque utilisateur.displayName: nom d'affichage de l'utilisateur RAM, tel que spécifié par le client.
Pour synchroniser les données utilisateur à l'aide des API SCIM :
-
Récupérez l'ID (client_id) et la valeur du secret (AppSecretValue) de l'application serveur autorisée.
client_id : ID de l'application. Vous pouvez obtenir cet ID à partir de l'étape Étape 1 : Créer et autoriser une application OAuth.
AppSecretValue : secret de l'application. Vous pouvez l'obtenir à partir de l'étape Étape 1 : Créer et autoriser une application OAuth.
-
Pour obtenir un
access_token, envoyez une requête contenant leclient_idet l'AppSecretValueà l'adressehttps://oauth.aliyun.com/v1/token.L'en-tête Authorization doit utiliser le format suivant :
"Authorization: Basic Base64Encode(client_id:AppSecretValue)". Par exemple, si client_id=cid et AppSecretValue=123456, l'en-tête Authorization doit être"Authorization: Basic Y2lkOjEyMzQ1Ng==".Exemple de requête :
curl --location --request POST --header "Authorization: Basic Y2lkOjEyMzQ1Ng==" https://oauth.aliyun.com/v1/token?grant_type=client_credentials&client_id=463790568674183****Exemple de réponse :
{ "scope": "/acs/scim", "request_id": "8dc768e0-d6fe-4f52-a788-05631dd6c584", "access_token": "eyJ***hKg", "token_type": "Bearer", "expires_in": "3599" } -
Interrogez les valeurs
ResourceTypeetSchemaprises en charge par SCIM sur Alibaba Cloud.Pour interroger les valeurs
ResourceTypeprises en charge :curl --location --request GET 'https://scim.aliyun.com/ResourceTypes'Pour interroger les valeurs
Schemaprises en charge :curl --location --request GET 'https://scim.aliyun.com/Schemas' -
Créez, interrogez, mettez à jour et supprimez des utilisateurs RAM.
-
Créez un utilisateur RAM.
Spécifiez les champs userName, displayName et externalId qui correspondent à l'utilisateur dans votre système sur site.
Exemple de requête :
curl --location --request POST 'https://scim.aliyun.com/Users' \ --header 'Authorization: Bearer eyJ***hKg' \ --header 'Content-Type: application/json' \ --data-raw '{ "displayName": "j2gg0s_****", "schemas": [ "urn:ietf:params:scim:schemas:core:2.0:User" ], "externalId": "6e74eec4-ddb5-4e74-bd12-5e7b99b2****", "userName": "j2gg0screatedbyscim_exa****" }'Exemple de réponse :
{ "displayName": "j2gg0s_****", "meta": { "created": "2020-02-14T03:58:59Z", "location": "https://scim.aliyun.com/Users/27648498165273****", "lastModified": "2020-02-14T03:58:59Z", "resourceType": "User" }, "schemas": [ "urn:ietf:params:scim:schemas:core:2.0:User" ], "externalId": "6e74eec4-ddb5-4e74-bd12-5e7b99b2****", "id": "27648498165273****", "userName": "j2gg0screatedbyscim_exa****" } -
Interrogez un utilisateur RAM spécifique.
Utilisez
GET /Users/{id}pour interroger un utilisateur RAM par sonid.Utilisez
GET /Users?filter=externalId eq xxxpour interroger un utilisateur RAM par sonexternalId.-
Utilisez
GET /Users?filter=userName eq xxxpour interroger un utilisateur RAM par sonuserName.Exemple de requête :
curl --location --request GET 'https://scim.aliyun.com/Users?filter=userName%20eq%20%22j2gg0screatedbyscim****%22' \ --header 'Authorization: Bearer eyJ***hKg'Exemple de réponse :
{ "startIndex": 1, "totalResults": 1, "itemsPerPage": 30, "schemas": [ "urn:ietf:params:scim:api:messages:2.0:ListResponse" ], "Resources": [ { "displayName": "j2gg0screatedbyscim****", "meta": { "created": "2019-12-11T01:53:19Z", "location": "https://scim.aliyun.com/Users/27769827602919****", "lastModified": "2019-12-11T02:10:39Z", "resourceType": "User" }, "schemas": [ "urn:ietf:params:scim:schemas:core:2.0:User" ], "externalId": "6e74eec4-ddb5-4e74-bd12-5e7b99b2****", "id": "27769827602919****", "userName": "j2gg0screatedbyscim****" } ] }RemarquePour les filtres SCIM, Alibaba Cloud ne prend en charge que les opérations
andeteqsur les attributsid,userNameetexternalId.
-
Mettez à jour les attributs d'un utilisateur RAM.
Exemple de requête :
curl --location --request PUT 'https://scim.aliyun.com/Users/27648498165273****' \ --header 'Authorization: Bearer eyJ***hKg' \ --header 'Content-Type: application/json' \ --data-raw '{ "displayName": "j2gg0s_new_****", "schemas": [ "urn:ietf:params:scim:schemas:core:2.0:User" ], "externalId": "6e74eec4-ddb5-4e74-bd12-5e7b99b2****", "userName": "j2gg0screatedbyscim_new_exa****" }'Exemple de réponse :
{ "displayName": "j2gg0s_new_****", "meta": { "created": "2020-02-14T03:58:59Z", "location": "https://scim.aliyun.com/Users/27648498165273****", "lastModified": "2020-02-14T04:03:55Z", "resourceType": "User" }, "schemas": [ "urn:ietf:params:scim:schemas:core:2.0:User" ], "externalId": "6e74eec4-ddb5-4e74-bd12-5e7b99b2****", "id": "27648498165273****", "userName": "j2gg0screatedbyscim_new_exa****"} -
Supprimez un utilisateur RAM.
Exemple de requête :
curl --location --request DELETE 'https://scim.aliyun.com/Users/27648498165273****' \ --header 'Authorization: Bearer eyJ***hKg' \ --header 'Content-Type: application/json'Un code d'état HTTP 204 confirme la réussite de la suppression.
RemarqueAlibaba Cloud ne prend pas en charge la suppression logique (soft delete). Mappez toutes les opérations de suppression logique vers une suppression définitive (hard delete) avant de synchroniser les données.
-