Emprunter l'identité d'un autre utilisateur à l'aide de l'API Web
Date de publication : janvier 2017
S’applique à : Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online
Quelquefois, votre code devra exécuter des opérations au nom d'un autre utilisateur. Si le compte système exécutant votre code contient des privilèges requis, vous pouvez exécuter des opérations à la place d'autres utilisateurs.
Contenu de la rubrique
Configuration requise pour l'emprunt d'identité
Comment emprunter l’identité d’un utilisateur ?
Déterminer l'utilisateur actuel
Configuration requise pour l'emprunt d'identité
L’emprunt d’identité permet d’exécuter une logique métier (code) au nom d’un autre utilisateur de Microsoft Dynamics 365 pour fournir une fonctionnalité ou un service voulu avec le rôle approprié et la sécurité basée sur les objets de cet utilisateur représenté. C’est nécessaire car les services Web Microsoft Dynamics 365 peuvent être appelés par différents clients et services au nom d’un utilisateur Dynamics 365, par exemple dans une solution ISV workflow ou personnalisée. L’emprunt d’identité comprend deux comptes d’utilisateurs différents : un compte d’utilisateur (A) sert à exécuter le code pour effectuer certaines tâches au nom d’un autre utilisateur (B).
Le compte d’utilisateur (A) a besoin du privilège prvActOnBehalfOfAnotherUser, qui est fourni avec le rôle de sécurité Délégué. L’ensemble réel de privilèges qui est utilisé pour modifier les données est à l’intersection des privilèges que l’utilisateur du rôle Delegate possède et de ceux de l’utilisateur qui est représenté. En d’autres termes, l’utilisateur (A) est autorisé à agir si et seulement si l’utilisateur (A) et l’utilisateur représenté (B) ont les privilèges nécessaires pour l’action.
Comment emprunter l’identité d’un utilisateur ?
Pour emprunter l'identité d'un utilisateur, ajoutez un en-tête de demande nommé MSCRMCallerID avec une valeur GUID égale à l'utilisateur faisant l'objet d'un emprunt d'identité systemuserid avant d'envoyer la demande au service Web. Dans cet exemple, une nouvelle entité de compte est créée au nom de l'utilisateur avec systemuserid 00000000-0000-0000-000000000002.
Demande
POST cc_WebAPI_ServiceURI/accounts HTTP/1.1 MSCRMCallerID: 00000000-0000-0000-000000000002 Accept: application/json Content-Type: application/json; charset=utf-8 OData-MaxVersion: 4.0 OData-Version: 4.0 {"name":"Sample Account created using impersonation"}
Réponse
HTTP/1.1 204 No Content OData-Version: 4.0 OData-EntityId: cc_WebAPI_ServiceURI/accounts(00000000-0000-0000-000000000003)
Déterminer l'utilisateur actuel
Lorsqu'une opération telle que la création d'une entité est effectuée avec l'emprunt d'identité, l'utilisateur qui a lancé l'opération peut être trouvé en interrogeant les enregistrements incluant la propriété de navigation à valeur unique createdonbehalfby. Une propriété de navigation à valeur unique modifiedonbehalfby correspondante est disponible pour les opérations qui mettent à jour l'entité.
Demande
GET cc_WebAPI_ServiceURI/accounts(00000000-0000-0000-000000000003)?$select=name&$expand=createdby($select=fullname),createdonbehalfby($select=fullname),owninguser($select=fullname) HTTP/1.1 Accept: application/json OData-MaxVersion: 4.0 OData-Version: 4.0
Réponse
HTTP/1.1 200 OK Content-Type: application/json; odata.metadata=minimal ETag: W/"506868" { "@odata.context": "cc_WebAPI_ServiceURI/$metadata#accounts(name,createdby,createdonbehalfby,owninguser,createdby(fullname),createdonbehalfby(fullname),owninguser(fullname))/$entity", "@odata.etag": "W/\"506868\"", "name": "Sample Account created using impersonation", "accountid": "00000000-0000-0000-000000000003", "createdby": { "@odata.etag": "W/\"506834\"", "fullname": "Impersonated User", "systemuserid": "00000000-0000-0000-000000000002", "ownerid": "00000000-0000-0000-000000000002" }, "createdonbehalfby": { "@odata.etag": "W/\"320678\"", "fullname": "Actual User", "systemuserid": "00000000-0000-0000-000000000001", "ownerid": "00000000-0000-0000-000000000001" }, "owninguser": { "@odata.etag": "W/\"506834\"", "fullname": "Impersonated User", "systemuserid": "00000000-0000-0000-000000000002", "ownerid": "00000000-0000-0000-000000000002" } }
Voir aussi
Effectuer des opérations à l'aide de l'API Web
Composer des demandes HTTP et gérer les erreurs
Interroger les données à l'aide de l'API Web
Créer une entité à l'aide de l'API Web
Récupérer une entité à l'aide de l'API Web
Mettre à jour et supprimer des entités à l'aide de l'API Web
Associer et dissocier les entités à l'aide de l'API Web
Utiliser des fonctions API Web
Utiliser des actions API Web
Exécuter des opérations par lots à l'aide de l'API Web
Effectuer les opérations conditionnelles à l'aide de l'API Web
Microsoft Dynamics 365
© 2017 Microsoft. Tous droits réservés. Copyright