Annehmen eines anderen Benutzerkontos mit Web API

 

Veröffentlicht: Januar 2017

Gilt für: Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online

Es gibt Zeiten, in denen Ihr Code im Namen eines anderen Benutzers Vorgänge ausführen muss. Wenn das Systemkonto, das Ihren Code ausführt, über die erforderlichen Berechtigungen verfügt, können Sie Vorgänge im Namen anderer Benutzer durchführen.

In diesem Thema

Anforderungen für den Identitätswechsel

So wird die Identität eines Benutzers angenommen

Bestimmen des tatsächlichen Benutzers

Anforderungen für den Identitätswechsel

Der Identitätswechsel wird verwendet, um die Geschäftslogik (Code) im Auftrag eines anderen Microsoft Dynamics 365-Benutzers auszuführen, um eine gewünschte Funktion oder einen Service mithilfe der entsprechenden rollen- und objektbasierten Sicherheit dieses benutzers auszuführen. Dies ist erforderlich, da die Microsoft Dynamics 365-Webdienste von verschiedenen Clients und Services im Auftrag eines Dynamics 365-Benutzers aufgerufen werden können, etwa in einem Workflow oder einer benutzerdefinierten ISV-Lösung. Der Identitätswechsel betrifft zwei verschiedene Benutzerkonten: ein Benutzerkonto (A) wird bei der Ausführung von Code zur Ausführung einer Aufgabe im Auftrag eines anderen Benutzers (B) verwendet.

Benutzerkonto (A) benötigt die Berechtigung prvActOnBehalfOfAnotherUser, die in der Sicherheitsrolle "Stellvertretung" enthalten ist. Die aktuelle Gruppe von Rechten, die verwendet wird, um Daten zu ändern, ist die Schnittmenge der Rechte, die der Stellvertreterbenutzer besitzt, und der des Benutzers, dessen Identität angenommen wird. In anderen Worten: Benutzer (A) kann nur dann etwas tun, wenn Benutzer (A) und der Benutzer (B), dessen Identität angenommen wird, über die dazu erforderlichen Rechte verfügen.

So wird die Identität eines Benutzers angenommen

Um den Kontext eines Benutzers zu nutzen, fügen Sie einen Anforderungsheader mit dem Namen MSCRMCallerID mit einem GUID-Wert entsprechend der systemuserid des Benutzers vor dem Senden der Anforderung an den Webdienst hinzu. In diesem Beispiel wird eine neue Kontoentität im Auftrag des Benutzers mit systemuserid 00000000-0000-0000-000000000002 erstellt.

  • Anforderung

    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"}
    
  • Antwort

    HTTP/1.1 204 No Content
    OData-Version: 4.0
    OData-EntityId: cc_WebAPI_ServiceURI/accounts(00000000-0000-0000-000000000003)
    

Bestimmen des tatsächlichen Benutzers

Wenn eine Vorgang wie das Erstellen einer Entität mithilfe des Identitätswechsels ausgeführt wird, kann der Benutzer, der den Vorgang tatsächlich ausgeführt hat, über die Abfrage des Datensatzes in der Einzelwert-Navigationseigenschaft createdonbehalfby abgerufen werden. Eine entsprechende modifiedonbehalfby einwertigen Navigationseigenschaft ist für Vorgänge verfügbar, durch die die Entität aktualisiert wird.

  • Anforderung

    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
    
  • Antwort

    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"
        }
    }
    

Siehe auch

Vorgänge mithilfe der Web-API ausführen
HTTP-Anforderungen verfassen und Fehler beheben
Datenabfrage mit Web-API
Erstellen einer Entität mithilfe des Web-API
Abrufen einer Entität mithilfe des Web-API
Entitäten aktualisieren und löschen mithilfe der Web API
Entitäten zuordnen und Zuordnungen aufheben mithilfe der Web API
Nutzen von Web-API-Funktionen
Nutzen von Web-API-Aktionen
Ausführen von Batchbetrieben mithilfe der Web-API
Bedingte Vorgänge mithilfe der Web-API ausführen

Microsoft Dynamics 365

© 2017 Microsoft. Alle Rechte vorbehalten. Copyright