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