Berechtigungen und Zustimmung im Microsoft Identity Platform-EndpunktPermissions and consent in the Microsoft identity platform endpoint

Anwendungen, die sich in die Microsoft Identity Platform integrieren lassen, folgen einem bestimmten Autorisierungsmodell, mit dem Benutzer und Administratoren den Zugriff auf Daten steuern können.Applications that integrate with Microsoft identity platform follow an authorization model that gives users and administrators control over how data can be accessed. Die Implementierung des Autorisierungsmodells wurde für den Microsoft Identity Platform-Endpunkt aktualisiert. Eine App muss daher jetzt auf andere Weise mit der Microsoft Identity Platform interagieren.The implementation of the authorization model has been updated on the Microsoft identity platform endpoint, and it changes how an app must interact with the Microsoft identity platform. Dieser Artikel behandelt die grundlegenden Konzepte dieses Autorisierungsmodells einschließlich der Bereiche, Berechtigungen und Zustimmung.This article covers the basic concepts of this authorization model, including scopes, permissions, and consent.

Bereiche und BerechtigungenScopes and permissions

Die Microsoft Identity Platform implementiert das OAuth 2.0-Autorisierungsprotokoll.The Microsoft identity platform implements the OAuth 2.0 authorization protocol. OAuth 2.0 ist eine Methode, über die eine Drittanbieter-App im Auftrag eines Benutzers auf im Web gehostete Ressourcen zugreifen kann.OAuth 2.0 is a method through which a third-party app can access web-hosted resources on behalf of a user. Alle im Web gehosteten Ressourcen, die in die Microsoft Identity Platform integriert werden können, verfügen über einen Ressourcenbezeichner bzw. Anwendungs-ID-URI.Any web-hosted resource that integrates with the Microsoft identity platform has a resource identifier, or Application ID URI. Zu den von Microsoft im Web gehosteten Ressourcen zählen beispielsweise:For example, some of Microsoft's web-hosted resources include:

  • Microsoft Graph: https://graph.microsoft.comMicrosoft Graph: https://graph.microsoft.com
  • API für Office 365-E-Mail: https://outlook.office.comOffice 365 Mail API: https://outlook.office.com
  • Azure Key Vault: https://vault.azure.netAzure Key Vault: https://vault.azure.net

Hinweis

Es wird dringend empfohlen, Microsoft Graph statt der API für Office 365-E-Mail usw. zu verwenden.We strongly recommend that you use Microsoft Graph instead of Office 365 Mail API, etc.

Dasselbe gilt für alle Ressourcen von Drittanbietern, die in die Microsoft Identity Platform integriert wurden.The same is true for any third-party resources that have integrated with the Microsoft identity platform. Diese Ressourcen können auch einen Satz von Berechtigungen definieren, die zum Unterteilen der Funktionalität der Ressource in kleinere Einheiten verwendet werden können.Any of these resources also can define a set of permissions that can be used to divide the functionality of that resource into smaller chunks. Beispielsweise verfügt Microsoft Graph über definierte Berechtigungen, um unter anderem folgende Aufgaben auszuführen:As an example, Microsoft Graph has defined permissions to do the following tasks, among others:

  • Lesen des Kalenders eines BenutzersRead a user's calendar
  • Schreiben in den Kalender eines BenutzersWrite to a user's calendar
  • Senden von E-Mails als BenutzerSend mail as a user

Durch das Definieren dieser Berechtigungstypen hat die Ressource eine präzisere Kontrolle über die Daten und die Art und Weise, wie API-Funktionen verfügbar gemacht werden.By defining these types of permissions, the resource has fine-grained control over its data and how API functionality is exposed. Eine Drittanbieter-App kann diese Berechtigungen von Benutzern und Administratoren anfordern. Diese müssen die Anforderung dann genehmigen, bevor die App auf Daten zugreifen oder im Namen eines Benutzers agieren kann.A third-party app can request these permissions from users and administrators, who must approve the request before the app can access data or act on a user's behalf. Durch Segmentieren der Ressourcenfunktionalität in kleinere Berechtigungssätze können Drittanbieter-Apps so erstellt werden, dass nur die spezifischen Berechtigungen angefordert werden, die diese Apps zum Durchführen ihrer Funktion benötigen.By chunking the resource's functionality into smaller permission sets, third-party apps can be built to request only the specific permissions that they need to perform their function. Benutzer und Administratoren können genau erkennen, auf welche Daten die App zugreifen kann, sodass sie sicher sein können, dass die App keine böswilligen Absichten verfolgt.Users and administrators can know exactly what data the app has access to, and they can be more confident that it isn't behaving with malicious intent. Entwickler sollten sich immer an die Regel der geringsten Rechte halten und nur die Berechtigungen anfordern, die für die Funktion ihrer Anwendungen erforderlich sind.Developers should always abide by the concept of least privilege, asking for only the permissions they need for their applications to function.

In OAuth 2.0 werden diese Berechtigungstypen Bereiche genannt.In OAuth 2.0, these types of permissions are called scopes. Oft werden sie auch als Berechtigungen bezeichnet.They are also often referred to as permissions. Eine Berechtigung wird in der Microsoft Identity Platform als Zeichenfolgenwert dargestellt.A permission is represented in the Microsoft identity platform as a string value. Im Beispiel von Microsoft Graph lautet der Zeichenfolgenwert für jede Berechtigung wie folgt:Continuing with the Microsoft Graph example, the string value for each permission is:

  • Lesen des Kalenders eines Benutzers mit Calendars.ReadRead a user's calendar by using Calendars.Read
  • Schreiben in den Kalender eines Benutzers mit Calendars.ReadWriteWrite to a user's calendar by using Calendars.ReadWrite
  • Senden von E-Mails als Benutzer mit Mail.SendSend mail as a user using by Mail.Send

Eine App fordert diese Berechtigungen meist durch Angabe der Bereiche in Anforderungen an den Microsoft Identity Platform-Autorisierungsendpunkt an.An app most commonly requests these permissions by specifying the scopes in requests to the Microsoft identity platform authorize endpoint. Bestimmte erhöhte Berechtigungen können jedoch nur mit der Einwilligung des Administrators gewährt werden und werden mit dem Endpunkt für die Administratoreinwilligung angefordert/gewährt.However, certain high privilege permissions can only be granted through administrator consent and requested/granted using the administrator consent endpoint. Weitere Informationen finden Sie im Folgenden.Read on to learn more.

BerechtigungstypenPermission types

Die Microsoft Identity Platform unterstützt zwei Arten von Berechtigungen: delegierte Berechtigungen und Anwendungsberechtigungen.Microsoft identity platform supports two types of permissions: delegated permissions and application permissions.

  • Delegierte Berechtigungen werden von Apps verwendet, bei denen ein angemeldeter Benutzer vorhanden ist.Delegated permissions are used by apps that have a signed-in user present. Für diese Apps willigt entweder der Benutzer oder ein Administrator in die Erteilung der von der App angeforderten Berechtigungen ein, und an die App wird die Berechtigung delegiert, bei Aufrufen der Zielressource als der angemeldete Benutzer zu agieren.For these apps, either the user or an administrator consents to the permissions that the app requests, and the app is delegated permission to act as the signed-in user when making calls to the target resource. Bei manchen delegierten Berechtigungen können Benutzer ohne Administratorrechte die Einwilligung erteilen, einige erhöhte Berechtigungen erfordern jedoch eine Administratoreinwilligung.Some delegated permissions can be consented to by non-administrative users, but some higher-privileged permissions require administrator consent. Um zu erfahren, welche Administratorrollen delegierten Berechtigungen zustimmen können, lesen Sie Berechtigungen der Administratorrolle in Azure AD.To learn which administrator roles can consent to delegated permissions, see Administrator role permissions in Azure AD.

  • Anwendungsberechtigungen werden von Apps verwendet, die ohne vorhandenen angemeldeten Benutzer ausgeführt werden. Dies können beispielsweise Apps sein, die als Hintergrunddienste oder Daemons ausgeführt werden.Application permissions are used by apps that run without a signed-in user present; for example, apps that run as background services or daemons. Für Anwendungsberechtigungen ist immer die Einwilligung eines Administrators erforderlich.Application permissions can only be consented by an administrator.

Effektive Berechtigungen sind die Berechtigungen, über die Ihre App verfügt, wenn sie Anforderungen an die Zielressource sendet.Effective permissions are the permissions that your app will have when making requests to the target resource. Es ist wichtig, den Unterschied zwischen den delegierten Berechtigungen und Anwendungsberechtigungen, die Ihrer App gewährt werden, und ihren effektiven Berechtigungen beim Durchführen von Aufrufen an die Zielressource zu verstehen.It's important to understand the difference between the delegated and application permissions that your app is granted and its effective permissions when making calls to the target resource.

  • Bei delegierten Berechtigungen sind die effektiven Berechtigungen Ihrer App die jeweils geringsten Rechte, die sich zusammen genommen aus den delegierten Berechtigungen, die der App (per Einwilligung) gewährt wurden, und den Berechtigungen des derzeit angemeldeten Benutzers ergeben.For delegated permissions, the effective permissions of your app will be the least privileged intersection of the delegated permissions the app has been granted (via consent) and the privileges of the currently signed-in user. Ihre App kann niemals über mehr Berechtigungen als der angemeldete Benutzer verfügen.Your app can never have more privileges than the signed-in user. In Organisationen können die Berechtigungen des angemeldeten Benutzers anhand einer Richtlinie oder der Mitgliedschaft in einer oder mehreren Administratorrollen bestimmt werden.Within organizations, the privileges of the signed-in user may be determined by policy or by membership in one or more administrator roles. Um zu erfahren, welche Administratorrollen delegierten Berechtigungen zustimmen können, lesen Sie Berechtigungen der Administratorrolle in Azure AD.To learn which administrator roles can consent to delegated permissions, see Administrator role permissions in Azure AD.

    Angenommen, Ihrer App wurde die delegierte Berechtigung User.ReadWrite.All gewährt.For example, assume your app has been granted the User.ReadWrite.All delegated permission. Mit dieser Berechtigung wird Ihrer App nominell die Berechtigung zum Lesen und Aktualisieren des Profils jedes Benutzers einer Organisation gewährt.This permission nominally grants your app permission to read and update the profile of every user in an organization. Wenn es sich beim angemeldeten Benutzer um einen globalen Administrator handelt, kann Ihre App das Profil jedes Benutzers in der Organisation aktualisieren.If the signed-in user is a global administrator, your app will be able to update the profile of every user in the organization. Falls der angemeldete Benutzer aber keine Administratorrolle innehat, kann Ihre App nur das Profil des angemeldeten Benutzers aktualisieren.However, if the signed-in user isn't in an administrator role, your app will be able to update only the profile of the signed-in user. Sie kann die Profile von anderen Benutzern der Organisation nicht aktualisieren, da der Benutzer, für den die App die Berechtigung zum Durchführen von Aktionen in dessen Namen hat, nicht über diese Berechtigungen verfügt.It will not be able to update the profiles of other users in the organization because the user that it has permission to act on behalf of does not have those privileges.

  • Bei Anwendungsberechtigungen umfassen die effektiven Berechtigungen Ihrer App die vollständige Berechtigungsstufe, die mit der Berechtigung verbunden ist.For application permissions, the effective permissions of your app will be the full level of privileges implied by the permission. Beispielsweise kann eine App mit der Anwendungsberechtigung User.ReadWrite.All das Profil aller Benutzer in der Organisation aktualisieren.For example, an app that has the User.ReadWrite.All application permission can update the profile of every user in the organization.

OpenID Connect-BereicheOpenID Connect scopes

Die Microsoft Identity Platform-Implementierung von OpenID Connect bietet einige klar definierte Bereiche, die ebenfalls auf der Microsoft Graph-Instanz gehostet werden: openid, email, profile und offline_access.The Microsoft identity platform implementation of OpenID Connect has a few well-defined scopes that are also hosted on the Microsoft Graph: openid, email, profile, and offline_access. Die OpenID Connect-Bereiche address und phone werden nicht unterstützt.The address and phone OpenID Connect scopes are not supported.

Bei der Anforderung der OIDC-Bereiche und eines Tokens erhalten Sie ein Token zum Aufrufen des UserInfo-Endpunkts.Requesting the OIDC scopes and a token will give you a token to call the UserInfo endpoint.

openidopenid

Bei einer App-Anmeldung mit OpenID Connect muss der openid-Bereich angefordert werden.If an app performs sign-in by using OpenID Connect, it must request the openid scope. Der openid-Bereich wird auf der Zustimmungsseite des Arbeitskontos als Berechtigung „Sie werden angemeldet“ angezeigt, und auf der Zustimmungsseite des persönlichen Microsoft-Kontos als Berechtigung „Ihr Profil anzeigen und mit Ihrem Microsoft-Konto eine Verbindung zu Apps und Diensten herstellen“.The openid scope shows on the work account consent page as the "Sign you in" permission, and on the personal Microsoft account consent page as the "View your profile and connect to apps and services using your Microsoft account" permission. Mit dieser Berechtigung kann eine App einen eindeutigen Bezeichner für den Benutzer in Form des Anspruchs sub empfangen.With this permission, an app can receive a unique identifier for the user in the form of the sub claim. Sie ermöglicht der App zudem Zugriff auf den Endpunkt mit den Benutzerinformationen.It also gives the app access to the UserInfo endpoint. Der Bereich openid kann am Microsoft Identity Platform-Tokenendpunkt zum Abrufen von ID-Token verwendet werden, die wiederum von der App für die Authentifizierung verwendet werden können.The openid scope can be used at the Microsoft identity platform token endpoint to acquire ID tokens, which can be used by the app for authentication.

emailemail

Der Bereich email kann zusammen mit dem Bereich openid und weiteren Bereichen verwendet werden.The email scope can be used with the openid scope and any others. Er gibt der App Zugriff auf die primäre E-Mail-Adresse des Benutzers in Form des Anspruchs email .It gives the app access to the user's primary email address in the form of the email claim. Der Anspruch email ist nur in einem Token enthalten, wenn dem Benutzerkonto eine E-Mail-Adresse zugewiesen ist (dies ist nicht immer der Fall).The email claim is included in a token only if an email address is associated with the user account, which isn't always the case. Bei Verwendung des Bereichs email sollte die Verarbeitung durch Ihre App auch dann möglich sein, wenn der Anspruch email nicht im Token vorhanden ist.If it uses the email scope, your app should be prepared to handle a case in which the email claim does not exist in the token.

profileprofile

Der Bereich profile kann zusammen mit dem Bereich openid und weiteren Bereichen verwendet werden.The profile scope can be used with the openid scope and any others. Er ermöglicht der App Zugriff auf eine Vielzahl von Benutzerinformationen.It gives the app access to a substantial amount of information about the user. Dazu gehören u.a. Vorname, Nachname, bevorzugter Benutzername und Objekt-ID des Benutzers.The information it can access includes, but isn't limited to, the user's given name, surname, preferred username, and object ID. Eine vollständige Liste der verfügbaren Profilansprüche im Parameter „id_tokens“ für einen bestimmten Benutzer finden Sie in der id_tokens-Referenz.For a complete list of the profile claims available in the id_tokens parameter for a specific user, see the id_tokens reference.

offline_accessoffline_access

Mit dem offline_access-Bereich kann Ihre App im Auftrag des Benutzers für einen längeren Zeitraum auf Ressourcen zugreifen.The offline_access scope gives your app access to resources on behalf of the user for an extended time. Auf der Einwilligungsseite wird dieser Bereich als Berechtigung „Zugriff auf Daten erhalten, auf die Sie Zugriff gewährt haben“ angezeigt.On the consent page, this scope appears as the "Maintain access to data you have given it access to" permission. Wenn ein Benutzer den offline_access-Bereich genehmigt, kann Ihre App Aktualisierungstoken vom Microsoft Identity Platform-Tokenendpunkt empfangen.When a user approves the offline_access scope, your app can receive refresh tokens from the Microsoft identity platform token endpoint. Aktualisierungstoken sind langlebig.Refresh tokens are long-lived. Ihrer App kann neue Zugriffstoken abrufen, wenn ältere ablaufen.Your app can get new access tokens as older ones expire.

Hinweis

Diese Berechtigung wird aktuell in allen Einwilligungsbildschirmen angezeigt – auch für Flüsse, die kein Aktualisierungstoken bereitstellen (impliziter Fluss).This permission appears on all consent screens today, even for flows that don't provide a refresh token (the implicit flow). Dadurch werden Szenarien abgedeckt, in denen ein Client im impliziten Fluss beginnt und anschließend mit dem Codefluss fortfährt, wo ein Aktualisierungstoken erwartet wird.This is to cover scenarios where a client can begin within the implicit flow, and then move onto to the code flow where a refresh token is expected.

Im Rahmen von Microsoft Identity Platform (Anforderungen an den v2.0-Endpunkt) muss Ihre App explizit den Bereich offline_access anfordern, um Aktualisierungstoken zu erhalten.On the Microsoft identity platform (requests made to the v2.0 endpoint), your app must explicitly request the offline_access scope, to receive refresh tokens. Dies bedeutet, dass Sie beim Einlösen eines Autorisierungscodes im OAuth 2.0-Autorisierungscodefluss nur ein Zugriffstoken vom /token-Endpunkt erhalten.This means that when you redeem an authorization code in the OAuth 2.0 authorization code flow, you'll receive only an access token from the /token endpoint. Das Zugriffstoken ist für eine kurze Zeit gültig.The access token is valid for a short time. Das Zugriffstoken läuft in der Regel nach einer Stunde ab.The access token usually expires in one hour. Zu diesem Zeitpunkt muss Ihre App den Benutzer zurück auf den /authorize-Endpunkt leiten, um einen neuen Autorisierungscode abzurufen.At that point, your app needs to redirect the user back to the /authorize endpoint to get a new authorization code. Während dieser Umleitung muss der Benutzer möglicherweise seine Anmeldeinformationen erneut eingeben oder den Berechtigungen erneut zustimmen, je nach App-Typ.During this redirect, depending on the type of app, the user might need to enter their credentials again or consent again to permissions.

Weitere Informationen zum Abrufen und Verwenden von Aktualisierungstoken finden Sie in der Microsoft Identity Platform-Protokollreferenz.For more information about how to get and use refresh tokens, see the Microsoft identity platform protocol reference.

In einer Autorisierungsanforderung von OpenID Connect oder OAuth 2.0 kann eine App die erforderlichen Berechtigungen mithilfe des scope-Abfrageparameters anfordern.In an OpenID Connect or OAuth 2.0 authorization request, an app can request the permissions it needs by using the scope query parameter. Wenn sich ein Benutzer beispielsweise in einer App anmeldet, sendet die App eine Anforderung wie die folgende (mit Zeilenumbrüchen zur besseren Lesbarkeit):For example, when a user signs in to an app, the app sends a request like the following example (with line breaks added for legibility):

GET https://login.microsoftonline.com/common/oauth2/v2.0/authorize?
client_id=6731de76-14a6-49ae-97bc-6eba6914391e
&response_type=code
&redirect_uri=http%3A%2F%2Flocalhost%2Fmyapp%2F
&response_mode=query
&scope=
https%3A%2F%2Fgraph.microsoft.com%2Fcalendars.read%20
https%3A%2F%2Fgraph.microsoft.com%2Fmail.send
&state=12345

Der scope-Parameter ist eine durch Leerzeichen getrennte Liste von delegierten Berechtigungen, die von der App angefordert werden.The scope parameter is a space-separated list of delegated permissions that the app is requesting. Jede Berechtigung wird durch Anfügen des Berechtigungswerts an den Ressourcenbezeichner (Anwendungs-ID-URI) angegeben.Each permission is indicated by appending the permission value to the resource's identifier (the Application ID URI). Die Anforderung im Beispiel gibt an, dass die Anwendung eine Berechtigung zum Lesen des Kalenders des Benutzers und Senden von E-Mails als Benutzer benötigt.In the request example, the app needs permission to read the user's calendar and send mail as the user.

Nachdem der Benutzer seine Anmeldeinformationen eingegeben hat, überprüft der Microsoft Identity Platform-Endpunkt, ob es einen übereinstimmenden Datensatz der Benutzerzustimmung gibt.After the user enters their credentials, the Microsoft identity platform endpoint checks for a matching record of user consent. Wenn der Benutzer in der Vergangenheit für keine der angeforderten Berechtigungen seine Einwilligung erteilt hat und auch kein Administrator für die gesamte Organisation in die Erteilung dieser Berechtigungen eingewilligt hat, fordert der Microsoft Identity Platform-Endpunkt den Benutzer auf, die angeforderten Berechtigungen zu gewähren.If the user has not consented to any of the requested permissions in the past, nor has an administrator consented to these permissions on behalf of the entire organization, the Microsoft identity platform endpoint asks the user to grant the requested permissions.

Hinweis

Zu diesem Zeitpunkt werden die Berechtigungen offline_access („Zugriff auf Daten erhalten, auf die Sie Zugriff gewährt haben“) und user.read („Anmelden und Ihr Profil lesen“) automatisch in die erste Einwilligung für eine Anwendung aufgenommen.At this time, the offline_access ("Maintain access to data you have given it access to") and user.read ("Sign you in and read your profile") permissions are automatically included in the initial consent to an application. Diese Berechtigungen sind im Allgemeinen für die ordnungsgemäße Funktionalität der App erforderlich – offline_access gibt der App Zugriff auf Aktualisierungstoken, die für native und Web-Apps entscheidend sind, während user.read Zugriff auf den sub-Anspruch gewährt, sodass der Client oder die App den Benutzer im Laufe der Zeit korrekt identifizieren und auf rudimentäre Benutzerinformationen zugreifen kann.These permissions are generally required for proper app functionality - offline_access gives the app access to refresh tokens, critical for native and web apps, while user.read gives access to the sub claim, allowing the client or app to correctly identify the user over time and access rudimentary user information.

Screenshot eines Beispiels für die Zustimmung im Arbeitskonto

Wenn der Benutzer die Berechtigungsanforderung genehmigt, wird die Einwilligung aufgezeichnet, und der Benutzer muss bei nachfolgenden Anmeldungen bei der Anwendung nicht erneut seine Einwilligung erteilen.When the user approves the permission request, consent is recorded and the user doesn't have to consent again on subsequent sign-ins to the application.

Organisationen, die Lizenzen oder Abonnements für eine Anwendung erwerben, möchten die Anwendung oft proaktiv zur Verwendung durch alle Mitglieder der Organisation einrichten.Often, when an organization purchases a license or subscription for an application, the organization wants to proactively set up the application for use by all members of the organization. Im Rahmen dieses Prozesses kann ein Administrator der Anwendung die Einwilligung erteilen, im Auftrag beliebiger Benutzer im Mandanten zu agieren.As part of this process, an administrator can grant consent for the application to act on behalf of any user in the tenant. Wenn der Administrator seine Einwilligung für den gesamten Mandanten erteilt, sehen die Benutzer der Organisation keine Einwilligungsseite für die Anwendung.If the admin grants consent for the entire tenant, the organization's users won't see a consent page for the application.

Um die Einwilligung für delegierte Berechtigungen für alle Benutzer in einem Mandanten anzufordern, kann Ihre App den Endpunkt für die Administratoreinwilligung verwenden.To request consent for delegated permissions for all users in a tenant, your app can use the admin consent endpoint.

Darüber hinaus müssen Anwendungen den Endpunkt für die Administratoreinwilligung zum Anfordern von Anwendungsberechtigungen verwenden.Additionally, applications must use the admin consent endpoint to request Application Permissions.

Auf den Administrator beschränkte BerechtigungenAdmin-restricted permissions

Einige hochrangige Berechtigungen im Microsoft-Ökosystem können als auf den Administrator beschränkt gesetzt werden.Some high-privilege permissions in the Microsoft ecosystem can be set to admin-restricted. Im Folgenden sehen Sie einige Beispiele für derartige Berechtigungen:Examples of these kinds of permissions include the following:

  • Lesen der vollständigen Profile aller Benutzer mit User.Read.AllRead all user's full profiles by using User.Read.All
  • Schreiben von Daten in das Verzeichnis einer Organisation mit Directory.ReadWrite.AllWrite data to an organization's directory by using Directory.ReadWrite.All
  • Lesen aller Gruppen im Verzeichnis einer Organisation mit Groups.Read.AllRead all groups in an organization's directory by using Groups.Read.All

Obwohl ein Endbenutzer einer Anwendung den Zugriff auf diese Daten gewähren kann, dürfen Organisationsbenutzer den Zugriff auf denselben Satz sensibler Unternehmensdaten nicht erteilen.Although a consumer user might grant an application access to this kind of data, organizational users are restricted from granting access to the same set of sensitive company data. Wenn Ihre Anwendung von einem Organisationsbenutzer Zugriff auf eine dieser Berechtigungen anfordert, wird dem Benutzer in einer Fehlermeldung mitgeteilt, dass er nicht befugt ist, den Berechtigungen Ihrer App zuzustimmen.If your application requests access to one of these permissions from an organizational user, the user receives an error message that says they're not authorized to consent to your app's permissions.

Wenn Ihre App den Zugriff auf diese dem Administrator vorbehaltenen Bereiche für Organisationen benötigt, sollten Sie diese ebenfalls über den Endpunkt für die Administratorzustimmung direkt von einem Unternehmensadministrator anfordern, wie im Folgenden beschrieben.If your app requires access to admin-restricted scopes for organizations, you should request them directly from a company administrator, also by using the admin consent endpoint, described next.

Wenn die Anwendung erhöhte delegierte Berechtigungen anfordert und ein Administrator diese über den Endpunkt für die Administratoreinwilligung gewährt, wird die Einwilligung für alle Benutzer im Mandanten erteilt.If the application is requesting high privilege delegated permissions and an administrator grants these permissions via the admin consent endpoint, consent is granted for all users in the tenant.

Wenn die Anwendung Anwendungsberechtigungen anfordert und ein Administrator diese über den Endpunkt für die Administratoreinwilligung gewährt, erfolgt diese Gewährung nicht für einen bestimmten Benutzer.If the application is requesting application permissions and an administrator grants these permissions via the admin consent endpoint, this grant isn't done on behalf of any specific user. Stattdessen werden der Clientanwendung direkt Berechtigungen gewährt.Instead, the client application is granted permissions directly. Diese Berechtigungstypen werden nur von Daemondiensten und anderen nicht interaktiven Anwendungen verwendet, die im Hintergrund ausgeführt werden.These types of permissions are only used by daemon services and other non-interactive applications that run in the background.

Hinweis

Beachten Sie, dass die Administratorzustimmung nach dem Erteilen der Administratorzustimmung über den Endpunkt abgeschlossen ist und die Benutzer keine weiteren Aktionen ausführen müssen.Please note after granting admin consent using the admin consent endpoint, you have finished granting admin consent and users do not need to perform any further additional actions. Nach dem Erteilen der Administratorzustimmung können die Benutzer über den üblichen Authentifizierungsflow ein Zugriffstoken abrufen, und das abgerufene Token umfasst die per Zustimmung erteilten Berechtigungen.After granting admin consent, users can get an access token via a typical auth flow and the resulting access token will have the consented permissions.

Wenn ein Unternehmensadministrator Ihre Anwendung verwendet und zum Autorisierungsendpunkt geleitet wird, erkennt die Microsoft Identity Platform die Rolle des Benutzers, und er wird gefragt, ob er seine Einwilligung für die angeforderten Berechtigungen für den gesamten Mandanten erteilen möchte.When a Company Administrator uses your application and is directed to the authorize endpoint, Microsoft identity platform will detect the user's role and ask them if they would like to consent on behalf of the entire tenant for the permissions you have requested. Es ist jedoch auch ein dedizierter Endpunkt für die Administratoreinwilligung verfügbar, den Sie verwenden können, wenn Sie die Gewährung von Berechtigungen proaktiv für den gesamten Mandanten von einem Administrator anfordern möchten.However, there is also a dedicated admin consent endpoint you can use if you would like to proactively request that an administrator grants permission on behalf of the entire tenant. Dieser Endpunkt ist auch zum Anfordern von Anwendungsberechtigungen erforderlich (diese können nicht mit dem Autorisierungsendpunkt angefordert werden).Using this endpoint is also necessary for requesting Application Permissions (which can't be requested using the authorize endpoint).

Anhand dieser Schritte kann Ihre App Berechtigungen für alle Benutzer in einem Mandanten anfordern, einschließlich der auf Administratoren beschränkten Bereiche.If you follow these steps, your app can request permissions for all users in a tenant, including admin-restricted scopes. Dieser Vorgang erfordert erhöhte Rechte und sollte nur ausgeführt werden, wenn er für Ihr Szenario erforderlich ist.This is a high privilege operation and should only be done if necessary for your scenario.

Ein Codebeispiel, in dem die beschriebenen Schritte implementiert sind, finden Sie unter Beispiel für auf Administratoren beschränkte Bereiche.To see a code sample that implements the steps, see the admin-restricted scopes sample.

Anfordern der Berechtigungen im App-RegistrierungsportalRequest the permissions in the app registration portal

Anwendungen können im App-Registrierungsportal angeben, welche Berechtigungen sie benötigen (sowohl delegierte als auch Anwendungsberechtigungen).Applications are able to note which permissions they require (both delegated and application) in the app registration portal. Dies ermöglicht die Verwendung des Bereichs /.default und der Option „Administratoreinwilligung erteilen“ im Azure-Portal.This allows use of the /.default scope and the Azure portal's "Grant admin consent" option. Stellen Sie nach Möglichkeit sicher, dass die statisch definierten Berechtigungen für eine bestimmte Anwendung eine Obermenge der Berechtigungen sind, die die Anwendung dynamisch/inkrementell anfordert.In general, it's best practice to ensure that the permissions statically defined for a given application are a superset of the permissions that it will be requesting dynamically/incrementally.

Hinweis

Anwendungsberechtigungen können nur über /.default angefordert werden. Wenn Ihre App Anwendungsberechtigungen benötigt, müssen Sie daher sicherstellen, dass diese im App-Registrierungsportal aufgeführt sind.Application permissions can only be requested through the use of /.default - so if your app needs application permissions, make sure they're listed in the app registration portal.

So konfigurieren Sie die Liste statisch angeforderter Berechtigungen für eine AnwendungTo configure the list of statically requested permissions for an application

  1. Wechseln Sie im Azure-Portal – App-Registrierungen zu Ihrer Anwendung oder erstellen Sie eine App, sofern noch nicht geschehen.Go to your application in the Azure portal – App registrations experience, or create an app if you haven't already.
  2. Suchen Sie den Abschnitt API-Berechtigungen, und klicken Sie in den API-Berechtigungen auf „Berechtigung hinzufügen“.Locate the API Permissions section, and within the API permissions click Add a permission.
  3. Wählen Sie in der Liste der verfügbaren APIs Microsoft Graph aus, und fügen Sie dann die Berechtigungen hinzu, die für die App erforderlich sind.Select Microsoft Graph from the list of available APIs and then add the permissions that your app requires.
  4. Speichern Sie die App-Registrierung.Save the app registration.

Beim Erstellen einer Anwendung, die den Endpunkt für die Administratorzustimmung verwendet, benötigt die App in der Regel eine Seite/Ansicht, die dem Administrator das Genehmigen der App-Berechtigungen gestattet.Typically, when you build an application that uses the admin consent endpoint, the app needs a page or view in which the admin can approve the app's permissions. Diese Seite kann Teil des Anmelde-Flows der App, Teil der App-Einstellungen oder ein dedizierter Flow „Verbinden“ sein.This page can be part of the app's sign-up flow, part of the app's settings, or it can be a dedicated "connect" flow. In vielen Fällen ist es sinnvoll, wenn die App diese Ansicht „Verbinden“ erst anzeigt, wenn ein Benutzer sich mit einem Geschäfts-, Schul- oder Unikonto von Microsoft angemeldet hat.In many cases, it makes sense for the app to show this "connect" view only after a user has signed in with a work or school Microsoft account.

Durch das Anmelden des Benutzers bei der App können Sie die Organisation identifizieren, der der Administrator angehört, bevor Sie zur Genehmigung der nötigen Berechtigungen auffordern.When you sign the user into your app, you can identify the organization to which the admin belongs before asking them to approve the necessary permissions. Auch wenn es nicht unbedingt erforderlich ist, können Sie für Ihre Organisationsbenutzer auf diese Weise eine intuitivere Benutzeroberfläche erstellen.Although not strictly necessary, it can help you create a more intuitive experience for your organizational users. Befolgen Sie unsere Tutorials zum Microsoft Identity Platform-Protokoll, um den Benutzer anzumelden.To sign the user in, follow our Microsoft identity platform protocol tutorials.

Anfordern der Berechtigungen von einem VerzeichnisadministratorRequest the permissions from a directory admin

Wenn Sie dazu bereit sind, vom Administrator der Organisation Berechtigungen anzufordern, können Sie den Benutzer zum Endpunkt für die Administratorzustimmung von Microsoft Identity Platform umleiten.When you're ready to request permissions from your organization's admin, you can redirect the user to the Microsoft identity platform admin consent endpoint.

// Line breaks are for legibility only.
GET https://login.microsoftonline.com/{tenant}/v2.0/adminconsent?
client_id=6731de76-14a6-49ae-97bc-6eba6914391e
&state=12345
&redirect_uri=http://localhost/myapp/permissions
&scope=
https://graph.microsoft.com/calendars.read
https://graph.microsoft.com/mail.send
ParameterParameter BedingungCondition BESCHREIBUNGDescription
tenant ErforderlichRequired Der Verzeichnismandant, von dem Sie die Berechtigung anfordern möchten.The directory tenant that you want to request permission from. Kann als eindeutiger Bezeichner oder Anzeigename bereitgestellt ODER mit Organisationen generisch referenziert werden, wie im Beispiel gezeigt.Can be provided in GUID or friendly name format OR generically referenced with organizations as seen in the example. Verwenden Sie nicht „Allgemein“, weil persönliche Konten die Administratoreinwilligung nur im Kontext eines Mandanten bereitstellen können.Do not use 'common', as personal accounts cannot provide admin consent except in the context of a tenant. Um die bestmögliche Kompatibilität mit persönlichen Konten sicherzustellen, die Mandanten verwalten, sollten Sie nach Möglichkeit die Mandanten-ID verwenden.To ensure best compatibility with personal accounts that manage tenants, use the tenant ID when possible.
client_id ErforderlichRequired Die Anwendungs-ID (Client-ID) , die Ihrer App im Azure-Portal auf der Seite „App-Registrierungen“ zugewiesen wurde.The Application (client) ID that the Azure portal – App registrations experience assigned to your app.
redirect_uri ErforderlichRequired Der Umleitungs-URI, an den die Antwort zur Verarbeitung durch die App gesendet werden soll.The redirect URI where you want the response to be sent for your app to handle. Er muss genau mit einem der Umleitungs-URIs übereinstimmen, die Sie im Portal registriert haben.It must exactly match one of the redirect URIs that you registered in the app registration portal.
state EmpfohlenRecommended Ein in der Anforderung enthaltener Wert, der auch in der Antwort zurückgegeben wird.A value included in the request that will also be returned in the token response. Es kann sich um eine Zeichenfolge mit jedem beliebigen Inhalt handeln.It can be a string of any content you want. Der Status wird verwendet, um Informationen über den Status des Benutzers in der App zu codieren, bevor die Authentifizierungsanforderung aufgetreten ist, z.B. Informationen zu der Seite oder Ansicht, die der Benutzer besucht hat.Use the state to encode information about the user's state in the app before the authentication request occurred, such as the page or view they were on.
scope ErforderlichRequired Definiert den von der Anwendung angeforderten Satz an Berechtigungen.Defines the set of permissions being requested by the application. Dies können statische (mit /.default) oder dynamische Bereiche sein.This can be either static (using /.default) or dynamic scopes. Dies kann auch die OIDC-Bereiche (openid, profile, email) einschließen.This can include the OIDC scopes (openid, profile, email). Wenn Sie Anwendungsberechtigungen benötigen, müssen Sie /.default verwenden, um die statisch konfigurierte Liste der Berechtigungen anzufordern.If you need application permissions, you must use /.default to request the statically configured list of permissions.

An diesem Punkt erzwingt Azure AD, dass sich nur ein Mandantenadministrator anmelden kann, um die Anforderung abzuschließen.At this point, Azure AD requires a tenant administrator to sign in to complete the request. Der Administrator wird aufgefordert, alle Berechtigungen zu genehmigen, die Sie für den Parameter scope angefordert haben.The administrator is asked to approve all the permissions that you have requested in the scope parameter. Wenn Sie einen statischen Wert (/.default) verwendet haben, funktioniert er wie der v1.0-Endpunkt für die Administratoreinwilligung und fordert die Zustimmung für alle Bereiche an, die in den erforderlichen Berechtigungen für die APP gefunden werden.If you've used a static (/.default) value, it will function like the v1.0 admin consent endpoint and request consent for all scopes found in the required permissions for the app.

Erfolgreiche AntwortSuccessful response

Wenn der Administrator die Berechtigungen für Ihre Anwendung genehmigt, lautet die erfolgreiche Antwort wie folgt:If the admin approves the permissions for your app, the successful response looks like this:

GET http://localhost/myapp/permissions?tenant=a8990e1f-ff32-408a-9f8e-78d3b9139b95&state=state=12345&admin_consent=True
ParameterParameter BESCHREIBUNGDescription
tenant Der Verzeichnismandant, der Ihrer Anwendung die angeforderten Berechtigungen erteilt hat, im GUID-Format.The directory tenant that granted your application the permissions it requested, in GUID format.
state Ein in der Anforderung enthaltener Wert, der auch in der Tokenantwort zurückgegeben wird.A value included in the request that also will be returned in the token response. Es kann sich um eine Zeichenfolge mit jedem beliebigen Inhalt handeln.It can be a string of any content you want. Der Status wird verwendet, um Informationen über den Status des Benutzers in der App zu codieren, bevor die Authentifizierungsanforderung aufgetreten ist, z.B. Informationen zu der Seite oder Ansicht, die der Benutzer besucht hat.The state is used to encode information about the user's state in the app before the authentication request occurred, such as the page or view they were on.
admin_consent Wird auf True festgelegt.Will be set to True.

FehlerantwortError response

Wenn der Administrator die Berechtigungen für Ihre App nicht genehmigt, lautet die Fehlerantwort wie folgt:If the admin does not approve the permissions for your app, the failed response looks like this:

GET http://localhost/myapp/permissions?error=permission_denied&error_description=The+admin+canceled+the+request
ParameterParameter BESCHREIBUNGDescription
error Eine Fehlercodezeichenfolge, die verwendet werden kann, um unterschiedliche Arten auftretender Fehler zu klassifizieren und um auf Fehler zu reagieren.An error code string that can be used to classify types of errors that occur, and can be used to react to errors.
error_description Eine spezifische Fehlermeldung, mit der ein Entwickler die Grundursache eines Fehlers identifizieren kann.A specific error message that can help a developer identify the root cause of an error.

Nachdem Sie eine erfolgreiche Antwort vom Endpunkt für die Administratorzustimmung erhalten haben, erhält Ihre App die Berechtigungen, die sie angefordert hat.After you've received a successful response from the admin consent endpoint, your app has gained the permissions it requested. Als Nächstes können Sie ein Token für die Ressource anfordern, die Sie möchten.Next, you can request a token for the resource you want.

Verwenden von BerechtigungenUsing permissions

Nachdem der Benutzer den Berechtigungen für Ihre App zugestimmt hat, kann Ihre App Zugriffstoken abrufen, die für die Berechtigung der App stehen, in irgendeiner Weise auf die Ressource zugreifen zu dürfen.After the user consents to permissions for your app, your app can acquire access tokens that represent your app's permission to access a resource in some capacity. Ein Zugriffstoken kann nur für eine einzelne Ressource verwendet werden, allerdings ist darin jede Berechtigung codiert, die Ihrer App für diese Ressource erteilt wurde.An access token can be used only for a single resource, but encoded inside the access token is every permission that your app has been granted for that resource. Um ein Zugriffstoken zu erhalten, kann Ihre App eine Anforderung an den Microsoft Identity Platform-Tokenendpunkt senden. Beispiel:To acquire an access token, your app can make a request to the Microsoft identity platform token endpoint, like this:

POST common/oauth2/v2.0/token HTTP/1.1
Host: https://login.microsoftonline.com
Content-Type: application/json

{
    "grant_type": "authorization_code",
    "client_id": "6731de76-14a6-49ae-97bc-6eba6914391e",
    "scope": "https://outlook.office.com/mail.read https://outlook.office.com/mail.send",
    "code": "AwABAAAAvPM1KaPlrEqdFSBzjqfTGBCmLdgfSTLEMPGYuNHSUYBrq..."
    "redirect_uri": "https://localhost/myapp",
    "client_secret": "zc53fwe80980293klaj9823"  // NOTE: Only required for web apps
}

Sie können das resultierende Zugriffstoken in HTTP-Anforderungen an die Ressource verwenden.You can use the resulting access token in HTTP requests to the resource. Es zeigt der Ressource zuverlässig, dass die App über die erforderliche Berechtigung verfügt, eine bestimmte Aufgabe auszuführen.It reliably indicates to the resource that your app has the proper permission to perform a specific task.

Weitere Informationen zum OAuth 2.0-Protokoll und zum Abrufen von Zugriffstoken finden Sie in der Protokollreferenz zum Microsoft Identity Platform-Endpunkt.For more information about the OAuth 2.0 protocol and how to get access tokens, see the Microsoft identity platform endpoint protocol reference.

Der Bereich „/.default“The /.default scope

Sie können den /.default-Bereich verwenden, um die Migration Ihrer Anwendungen vom v1.0-Endpunkt zum Microsoft Identity Platform-Endpunkt zu unterstützen.You can use the /.default scope to help migrate your apps from the v1.0 endpoint to the Microsoft identity platform endpoint. Dies ist ein integrierter Bereich für jede Anwendung, der sich auf die statische Liste der Berechtigungen bezieht, die bei der Anwendungsregistrierung konfiguriert wurde.This is a built-in scope for every application that refers to the static list of permissions configured on the application registration. Ein scope-Wert von https://graph.microsoft.com/.default ist funktionell identisch mit den v1.0-Endpunkten resource=https://graph.microsoft.com – d.h. es wird ein Token mit den Bereichen auf Microsoft Graph angefordert, für den die Anwendung im Azure-Portal registriert wurde.A scope value of https://graph.microsoft.com/.default is functionally the same as the v1.0 endpoints resource=https://graph.microsoft.com - namely, it requests a token with the scopes on Microsoft Graph that the application has registered for in the Azure portal. Sie wird mit dem Ressourcen-URI und /.default erstellt (wenn der Ressourcen-URI z. B. https://contosoApp.com lautet, wird der Bereich https://contosoApp.com/.default angefordert).It is constructed using the resource URI + /.default (e.g. if the resource URI is https://contosoApp.com, then the scope requested would be https://contosoApp.com/.default). Im Abschnitt zu nachgestellten Schrägstrichen finden Sie Fälle, in denen Sie einen zweiten Schrägstrich einfügen müssen, damit das Token ordnungsgemäß angefordert wird.See the section on trailing slashes for cases where you must include a second slash to correctly request the token.

Der Bereich „/.default“ kann in jedem OAuth 2.0-Flow verwendet werden. Im On-Behalf-Of-Fluss und im Clientanmeldeinformations-Flow sowie bei Verwendung des v2-Endpunkts für die Administratoreinwilligung ist er jedoch erforderlich, um Anwendungsberechtigungen anzufordern.The /.default scope can be used in any OAuth 2.0 flow, but is necessary in the On-Behalf-Of flow and client credentials flow, as well as when using the v2 admin consent endpoint to request application permissions.

Hinweis

Clients können keine statische (/.default) und dynamische Einwilligung in einer einzelnen Anforderung kombinieren.Clients can't combine static (/.default) and dynamic consent in a single request. Daher führt scope=https://graph.microsoft.com/.default+mail.read aufgrund der Kombination aus Bereichstypen zu einem Fehler.Thus, scope=https://graph.microsoft.com/.default+mail.read will result in an error due to the combination of scope types.

Der /.default-Bereich löst auch das v1. 0-Endpunktverhalten für prompt=consent aus.The /.default scope triggers the v1.0 endpoint behavior for prompt=consent as well. Es wird die Einwilligung für alle von der Anwendung registrierten Berechtigungen angefordert, unabhängig von der Ressource.It requests consent for all permissions registered by the application, regardless of the resource. Wenn der Bereich /.default als Teil der Anforderung eingebunden ist, gibt er ein Token zurück, das die Bereiche für die angeforderte Ressource enthält.If included as part of the request, the /.default scope returns a token that contains the scopes for the resource requested.

Da /.default funktionell identisch mit dem Verhalten des resource-zentrierten v1.0-Endpunkts ist, bringt es auch das Einwilligungsverhalten des v1.0-Endpunkts mit sich.Because /.default is functionally identical to the resource-centric v1.0 endpoint's behavior, it brings with it the consent behavior of the v1.0 endpoint as well. Das heißt, /.default löst nur dann eine Einwilligungsaufforderung aus, wenn der Benutzer keine Berechtigung zwischen dem Client und der Ressource erteilt hat.Namely, /.default only triggers a consent prompt if no permission has been granted between the client and the resource by the user. Wenn eine solche Einwilligung vorliegt, wird ein Token mit allen Bereichen zurückgegeben, die der Benutzer für diese Ressource gewährt hat.If any such consent exists, then a token will be returned containing all scopes granted by the user for that resource. Wenn jedoch keine Berechtigung erteilt wurde oder der Parameter prompt=consent angegeben wurde, wird eine Einwilligungsaufforderung für alle von der Clientanwendung registrierten Bereiche angezeigt.However, if no permission has been granted, or the prompt=consent parameter has been provided, a consent prompt will be shown for all scopes registered by the client application.

Beispiel 1: Der Benutzer oder Administrator des Mandanten hat die Berechtigungen erteilt.Example 1: The user, or tenant admin, has granted permissions

In diesem Beispiel hat der Benutzer (oder ein Mandantenadministrator) dem Client die Microsoft Graph-Berechtigungen mail.read und user.read erteilt.In this example, the user (or a tenant administrator) has granted the client the Microsoft Graph permissions mail.read and user.read. Wenn der Client eine Anforderung für scope=https://graph.microsoft.com/.default stellt, wird unabhängig vom Inhalt der für Microsoft Graph registrierten Berechtigungen der Clientanwendungen keine Einwilligungsaufforderung angezeigt.If the client makes a request for scope=https://graph.microsoft.com/.default, then no consent prompt will be shown regardless of the contents of the client applications registered permissions for Microsoft Graph. Es wird ein Token mit den Bereichen mail.read und user.read zurückgegeben.A token would be returned containing the scopes mail.read and user.read.

Beispiel 2: Der Benutzer hat keine Berechtigungen zwischen dem Client und der Ressource erteilt.Example 2: The user hasn't granted permissions between the client and the resource

Es gibt in diesem Beispiel keine Einwilligung für den Benutzer zwischen dem Client und Microsoft Graph.In this example, no consent for the user exists between the client and Microsoft Graph. Der Client ist für die Berechtigungen user.read und contacts.read sowie den Bereich „Azure Key Vault“ https://vault.azure.net/user_impersonation registriert.The client has registered for the user.read and contacts.read permissions, as well as the Azure Key Vault scope https://vault.azure.net/user_impersonation. Wenn der Client ein Token für scope=https://graph.microsoft.com/.default anfordert, sieht der Benutzer einen Einwilligungsbildschirm für die Bereiche user.read, contacts.read und Key Vault user_impersonation.When the client requests a token for scope=https://graph.microsoft.com/.default, the user will see a consent screen for the user.read, contacts.read, and the Key Vault user_impersonation scopes. Das zurückgegebene Token enthält nur die Bereiche user.read und contacts.read und kann nur für Microsoft Graph verwendet werden.The token returned will have just the user.read and contacts.read scopes in it and only be usable against Microsoft Graph.

Beispiel 3: Der Benutzer hat eingewilligt und der Client fordert zusätzliche Bereiche an.Example 3: The user has consented and the client requests additional scopes

In diesem Beispiel hat der Benutzer bereits in mail.read für den Client eingewilligt.In this example, the user has already consented to mail.read for the client. Der Client hat sich in seiner Registrierung für den Bereich contacts.read registriert.The client has registered for the contacts.read scope in its registration. Wenn der Client eine Anforderung für ein Token mit scope=https://graph.microsoft.com/.default stellt und die Einwilligung über prompt=consent anfordert, sieht der Benutzer einen Einwilligungsbildschirm für alle von der Anwendung registrierten Berechtigungen (aber keine zusätzlichen).When the client makes a request for a token using scope=https://graph.microsoft.com/.default and requests consent through prompt=consent, then the user will see a consent screen for all (and only) the permissions registered by the application. contacts.read wird im Einwilligungsbildschirm angezeigt, mail.read aber nicht.contacts.read will be present in the consent screen, but mail.read will not. Das zurückgegebene Token gilt für Microsoft Graph und enthält mail.read und contacts.read.The token returned will be for Microsoft Graph and will contain mail.read and contacts.read.

Verwenden des Bereichs „/.default“ mit dem ClientUsing the /.default scope with the client

Ein Sonderfall des Bereichs /.default liegt vor, wenn ein Client seinen eigenen Bereich /.default anfordert.A special case of the /.default scope exists where a client requests its own /.default scope. Das folgende Beispiel veranschaulicht dieses Szenario.The following example demonstrates this scenario.

// Line breaks are for legibility only.

GET https://login.microsoftonline.com/{tenant}/oauth2/v2.0/authorize?
response_type=token            //code or a hybrid flow is also possible here
&client_id=9ada6f8a-6d83-41bc-b169-a306c21527a5
&scope=9ada6f8a-6d83-41bc-b169-a306c21527a5/.default
&redirect_uri=https%3A%2F%2Flocalhost
&state=1234

Dies erzeugt einen Einwilligungsbildschirm für alle registrierten Berechtigungen (falls zutreffend basierend auf den obigen Beschreibungen der Einwilligung und /.default), und gibt dann ein id_token statt ein Zugriffstoken zurück.This produces a consent screen for all registered permissions (if applicable based on the above descriptions of consent and /.default), then returns an id_token, rather than an access token. Dieses Verhalten gilt für bestimmte Legacy-Clients, die von ADAL auf MSAL umgestellt werden, und sollte nicht von neuen Clients verwendet werden, die auf den Microsoft Identity Platform-Endpunkt ausgerichtet sind.This behavior exists for certain legacy clients moving from ADAL to MSAL, and should not be used by new clients targeting the Microsoft identity platform endpoint.

Nachgestellter Schrägstrich und „/.default“Trailing slash and /.default

Einige Ressourcen-URIs enthalten einen nachgestellten Schrägstrich (https://contoso.com/ anstelle von https://contoso.com), der Probleme bei der Tokenüberprüfung verursachen kann.Some resource URIs have a trailing slash (https://contoso.com/ as opposed to https://contoso.com), which can cause problems with token validation. Dies kann vor allem dann auftreten, wenn ein Token für die Azure-Ressourcenverwaltung (https://management.azure.com/) angefordert wird, das im Ressourcen-URI einen nachgestellten Schrägstrich aufweist und bei der Anforderung des Tokens vorhanden sein muss.This can occur primarily when requesting a token for Azure Resource Management (https://management.azure.com/), which has a trailing slash on their resource URI and requires it to be present when the token is requested. Wenn Sie ein Token für https://management.azure.com/ anfordern und dabei /.default verwenden, müssen Sie daher https://management.azure.com//.default anfordern – beachten Sie den doppelten Schrägstrich!Thus, when requesting a token for https://management.azure.com/ and using /.default, you must request https://management.azure.com//.default - note the double slash!

Im Allgemeinen gilt: Wenn Sie bestätigt haben, dass das Token ausgestellt wird, und das Token von der API abgelehnt wird, obwohl sie es eigentlich akzeptieren sollte, können Sie versuchen, einen zweiten Schrägstrich hinzufügen und den Vorgang zu wiederholen.In general - if you've validated that the token is being issued, and the token is being rejected by the API that should accept it, consider adding a second slash and trying again. Dies liegt daran, dass der Anmeldeserver ein Token mit einem Ziel ausgibt, das mit den URIs im scope-Parameter übereinstimmt, wobei /.default am Ende entfernt wurde.This happens because the login server emits a token with the audience matching the URIs in the scope parameter - with /.default removed from the end. Wenn dadurch der nachstehende Schrägstrich entfernt wird, verarbeitet der Anmeldeserver die Anforderung trotzdem und überprüft sie anhand des Ressourcen-URI, auch wenn beide nicht mehr übereinstimmen. Dies ist kein Standardverhalten, und Ihre Anwendung sollte nicht darauf angewiesen sein.If this removes the trailing slash, the login server still processes the request and validates it against the resource URI, even though they no longer match - this is non-standard and should not be relied on by your application.

Falls Sie oder die Benutzer Ihrer Anwendung während des Einwilligungsprozesses unerwartete Fehler feststellen, finden Sie diesem Artikel Anleitungen zur Problembehandlung: Unerwarteter Fehler beim Vorgang des Genehmigens einer Anwendung.If you or your application's users are seeing unexpected errors during the consent process, see this article for troubleshooting steps: Unexpected error when performing consent to an application.