Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Verwenden Sie Impersonation, um Geschäftslogik im Namen eines anderen Microsoft Dataverse-Benutzers auszuführen. Mithilfe der entsprechenden rollen- und objektbasierten Sicherheit des imitierten Benutzers können Sie ein gewünschtes Feature oder einen gewünschten Dienst bereitstellen.
Verschiedene Clients und Dienste können den Identitätswechsel verwenden, um die Dataverse-Webdienste im Auftrag eines Dataverse-Benutzers aufzurufen.
Identitätsanmaßung umfasst zwei unterschiedliche Benutzerkonten:
| Identitätsvortäuscher | Benutzer mit übernommener Identität |
|---|---|
| Benutzerkonto, das verwendet wird, wenn Code ausgeführt wird | Benutzerkonto, in dessen Auftrag die Aufgabe ausgeführt wird. |
Erforderliche Berechtigungen
Der Identitätswechsler benötigt die Berechtigung Vorgänge im Namen anderer Benutzer ausführen (prvActOnBehalfOfAnotherUser). Diese Berechtigung ist in der Sicherheitsrolle " Stellvertretung " enthalten oder kann für jede Sicherheitsrolle aktiviert werden.
Anmerkung
Benutzer können mehreren Sicherheitsrollen zugeordnet werden. Die Zuweisung der Sicherheitsrolle "Delegierter" an einen Benutzer gewährt die Berechtigung prvActOnBehalfOfAnotherUser sowie die Berechtigungen, die durch alle anderen dem Benutzerkonto zugeordneten Sicherheitsrollen gewährt werden.
Der tatsächliche Satz von Berechtigungen, die zum Ändern von Daten verwendet werden, ist der Schnittpunkt der Berechtigungen, die der Identitätswechselbenutzer mit dem des imitierten Benutzers besitzt.
Mit anderen Worten: Der Identitätswechsler kann nur dann etwas tun, wenn der Identitätswechsler und der imitierte Benutzer über die dazu erforderlichen Rechte verfügen.
Direkte Zuweisung erforderlich
Sie müssen Benutzern die Berechtigung Act on Behalf of Another User (prvActOnBehalfOfAnotherUser) oder eine Rolle, die diese Berechtigung enthält, direkt zuweisen. Benutzer können diese Berechtigung nicht über ein Team erben. Diese direkte Zuordnung ist aufgrund der sensiblen Art der Berechtigung erforderlich.
Identitätswechsel mit Server-zu-Server-Authentifizierung
Wenn Sie eine Webanwendung erstellen, die ein Benutzerkonto erfordert, das im Namen eines abonnierenden Benutzers handeln kann, verwenden Sie das spezielle Anwendungsbenutzerkonto , damit Sie keine kostenpflichtige Dataverse-Benutzerlizenz verwenden müssen.
Weitere Informationen finden Sie unter: Webanwendungen mit der Server-zu-Server-(S2S)-Authentifizierung erstellen..
Benutzeridentität über die Web-API wechseln
Sie können sich als ein Benutzer ausgeben, indem Sie einen Anforderungsheader mit der entsprechenden Benutzer-ID übergeben, bevor Sie die Anforderung an den Webdienst senden.
So wird ein Benutzer imitiert
Verwenden Sie eine der folgenden Kopfzeilen:
-
Bevorzugt: Setzen Sie
CallerObjectIdauf die Microsoft Entra ID-Objekt-ID des imitierten Benutzers. Dieser Wert wird in SystemUser.AzureActiveDirectoryObjectId gespeichert. -
Legacy: Legen Sie auf den GUID-Wert des imitierten Benutzers
MSCRMCallerIDfest.
Im folgenden Beispiel wird eine Kontozeile im Namen des Benutzers mit der Microsoft Entra ID Objekt-ID aaaaaaaa-0000-1111-2222-bbbbbbbbbbbberstellt.
Anforderung:
POST [Organization URI]/api/data/v9.2/accounts HTTP/1.1
CallerObjectId: aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb
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: [Organization URI]/api/data/v9.2/accounts(00000000-0000-0000-0000-000000000003)
Bestimmen des tatsächlichen Benutzers
Wenn Sie eine Zeile mithilfe von Impersonation erstellen, fragen Sie die createdonbehalfby einzelwertige Navigationseigenschaft ab, um den Benutzer zu suchen, der den Vorgang tatsächlich ausgeführt hat. Verwenden Sie für Aktualisierungen die entsprechende modifiedonbehalfby einzelwertige Navigationseigenschaft.
Im folgenden Beispiel wird das im vorherigen Beispiel erstellte Konto abgerufen. Die Eigenschaften createdby und owninguser identifizieren den Benutzer, dessen Identität angenommen wird, während createdonbehalfby den tatsächlichen Benutzer identifiziert.
Anforderung:
GET [Organization URI]/api/data/v9.2/accounts(00000000-0000-0000-0000-000000000003)?$select=name&$expand=createdby($select=fullname,azureactivedirectoryobjectid),createdonbehalfby($select=fullname,azureactivedirectoryobjectid),owninguser($select=fullname,azureactivedirectoryobjectid) 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/"2751197"
{
"@odata.context": "[Organization URI]/api/data/v9.2/$metadata#accounts(name,createdby(fullname,azureactivedirectoryobjectid),createdonbehalfby(fullname,azureactivedirectoryobjectid),owninguser(fullname,azureactivedirectoryobjectid))/$entity",
"@odata.etag": "W/\"2751197\"",
"name": "Sample Account created using impersonation",
"accountid": "00000000-0000-0000-0000-000000000003",
"createdby": {
"@odata.etag": "W/\"2632435\"",
"fullname": "Impersonated User",
"azureactivedirectoryobjectid": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb",
"systemuserid": "00aa00aa-bb11-cc22-dd33-44ee44ee44ee",
"ownerid": "00aa00aa-bb11-cc22-dd33-44ee44ee44ee"
},
"createdonbehalfby": {
"@odata.etag": "W/\"2632445\"",
"fullname": "Actual User",
"azureactivedirectoryobjectid": "bbbbbbbb-1111-2222-3333-cccccccccccc",
"systemuserid": "11bb11bb-cc22-dd33-ee44-55ff55ff55ff",
"ownerid": "11bb11bb-cc22-dd33-ee44-55ff55ff55ff"
},
"owninguser": {
"@odata.etag": "W/\"2632435\"",
"fullname": "Impersonated User",
"azureactivedirectoryobjectid": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb",
"systemuserid": "00aa00aa-bb11-cc22-dd33-44ee44ee44ee",
"ownerid": "00aa00aa-bb11-cc22-dd33-44ee44ee44ee"
}
}
Benutzeridentität über das SDK für .NET wechseln
Um einen anderen Benutzer zu imitieren, legen Sie die Eigenschaft CallerId auf den GUID-Wert des imitierten Benutzers fest. Die folgenden Klassen, die IOrganizationService implementieren, umfassen diese Eigenschaft.
Identität eines anderen Benutzers mithilfe von Plug-Ins annehmen
Um den Benutzer zu definieren, für den der Vorgang verwendet werden soll, können Sie ein Plug-In mit Code registrieren. Weitere Informationen: Annehmen der Identität eines Benutzers
Siehe auch
Erstellen von Webanwendungen mit Server-to-Server-Authentifizierung (S2S)
Vorgänge mit der Web-API ausführen
Schreiben eines Plug-Ins