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