Anfordern von Berechtigungen durch Einwilligung
Anwendungen im Microsoft Identity Platform-Endpunkt benötigen eine Einwilligung, um auf erforderliche Ressourcen oder APIs zuzugreifen. Für die unterschiedlichen Anwendungsszenarios sind verschiedene Arten der Einwilligung am besten geeignet. Wenn Sie den besten Ansatz bei der Einwilligung für Ihre App auswählen, wird sie dadurch bei Benutzer*innen und Organisationen beliebter.
In diesem Artikel erfahren Sie mehr über die verschiedenen Arten der durch die Einwilligung anfordern.
Statische Benutzerzustimmung
Beim Szenario mit statischer Benutzereinwilligung müssen Sie im Microsoft Entra Admin Center in der Konfiguration der App alle erforderlichen Berechtigungen angeben. Wenn der*die Benutzer*in (bzw. Administrator*in) die Einwilligung für diese App nicht erteilt hat, wird der*die Benutzer*in vom Microsoft Identity Platform-Endpunkt aufgefordert, die Einwilligung jetzt zu erteilen.
Mit statischen Berechtigungen können Administrator*innen auch im Namen aller Benutzer*innen in der Organisation einwilligen.
Die Verwendung der statischen Einwilligung und einer einzelnen Berechtigungsliste hält den Code zwar übersichtlich und einfach, bedeutet aber auch, dass Ihre App von vornherein alle Berechtigungen anfordert, die sie jemals benötigen könnte. Dies kann Benutzer*innen und Administrator*innen davon abhalten, die Zugriffsanforderung Ihrer App zu genehmigen.
Inkrementelle und dynamische Benutzerzustimmung
Mit dem Endpunkt der Microsoft-Identitätsplattform können Sie die in den App-Registrierungsinformationen im Microsoft Entra Admin Center definierten statischen Berechtigungen ignorieren. Stattdessen können Sie Berechtigungen inkrementell anfordern. Sie können zunächst nur ein Minimum an Berechtigungen anfordern und im Lauf der Zeit weitere beantragen, wenn der Kunde zusätzliche Anwendungsfunktionen verwendet. Hierzu können Sie die Bereiche angeben, die für Ihre Anwendung zu beliebigen Zeitpunkten benötigt werden, indem Sie die neuen Bereiche in den Parameter scope
einfügen, wenn Sie ein Zugriffstoken anfordern. Es ist nicht erforderlich, sie in den Informationen der Anwendungsregistrierung vorab zu definieren. Wenn der Benutzer noch nicht seine Zustimmung zu den neuen Bereichen gegeben hat, die der Anforderung hinzugefügt wurden, wird er aufgefordert, seine Zustimmung nur für die neuen Berechtigungen zu erteilen. Die inkrementelle oder dynamische Einwilligung gilt nur für delegierte Berechtigungen und nicht für Anwendungsberechtigungen.
Wenn es für eine Anwendung zugelassen wird, Berechtigungen dynamisch über den scope
-Parameter anzufordern, erhalten Entwickler*innen die vollständige Kontrolle über die Benutzeroberfläche. Sie können die Zustimmungserfahrung auch vorziehen und alle Berechtigungen in einer anfänglichen Autorisierungsanforderung erfragen. Wenn Ihre Anwendung eine große Anzahl von Berechtigungen benötigt, können Sie die Berechtigungen inkrementell von dem*der Benutzer*in einholen, während er*sie im Laufe der Zeit versucht, bestimmte Funktionen der Anwendung zu nutzen.
Wichtig
Die dynamische Einwilligung kann komfortabel sein. Sie stellt aber eine große Herausforderung in Bezug auf Berechtigungen dar, für die die Zustimmung durch einen Administrator erforderlich ist. Die Administratoreinwilligungserfahrung auf den Blättern App-Registrierungen und Enterprise-Anwendungen im Portal hat zur Einwilligungszeit keine Kenntnis von diesen dynamischen Berechtigungen. Es wird empfohlen, dass ein*e Entwickler*in alle Administratorberechtigungen auflistet, die von der Anwendung im Portal benötigt werden. Dadurch können Mandantenadministratoren im Auftrag aller ihrer Benutzer einmalig im Portal einwilligen. Benutzer müssen die Einwilligungserfahrung für diese Berechtigungen bei der Anmeldung nicht durchlaufen. Die Alternative besteht darin, die dynamische Einwilligung für diese Berechtigungen zu verwenden. Um die Administratoreinwilligung zu erteilen, meldet sich ein einzelner Administrator bei der App an, löst eine Einwilligungsaufforderung für die entsprechenden Berechtigungen aus und wählt Einwilligung für meine gesamte Organisation im Einwilligungsdialogfeld aus.
Anfordern der Zustimmung einzelner Benutzer
In einer Autorisierungsanforderung von OpenID Connect oder OAuth 2.0 kann eine Anwendung die erforderlichen Berechtigungen mithilfe des scope
-Abfrageparameters anfordern. Wenn sich ein*e Benutzer*in beispielsweise bei einer Anwendung anmeldet, sendet die App eine Anforderung wie die folgende. (Zur besseren Lesbarkeit wurden Zeilenumbrüche eingefügt.)
GET https://login.microsoftonline.com/common/oauth2/v2.0/authorize?
client_id=00001111-aaaa-2222-bbbb-3333cccc4444
&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 Anwendung angefordert werden. Die einzelnen Berechtigungen werden jeweils durch Anfügen des Berechtigungswerts an den Ressourcenbezeichner (Anwendungs-ID-URI) angegeben. Im Anforderungsbeispiel benötigt die Anwendung eine Berechtigung zum Lesen des Kalenders des Benutzers und Senden von E-Mails als Benutzer.
Nachdem der Benutzer seine Anmeldeinformationen eingegeben hat, überprüft Microsoft Identity Platform, ob es einen übereinstimmenden Eintrag für die Benutzerzustimmung gibt. Wenn der Benutzer in der Vergangenheit für keine der angeforderten Berechtigungen seine Zustimmung erteilt und der Administrator im Namen der gesamten Organisation diesen Berechtigungen nicht zugestimmt hat, wird der Benutzer durch Microsoft Identity Platform aufgefordert, die angeforderten Berechtigungen zu gewähren.
Im folgenden Beispiel 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. Diese Berechtigungen sind für die ordnungsgemäße Funktionalität der Anwendung erforderlich. Die Berechtigung offline_access
ermöglicht der Anwendung den Zugriff auf Aktualisierungstoken, die für native Apps und Web-Apps von entscheidender Bedeutung sind. Die Berechtigung User.Read
ermöglicht den Zugriff auf den Anspruch sub
. Dadurch kann der Client oder die Anwendung den Benutzer im Laufe der Zeit korrekt identifizieren und auf rudimentäre Benutzerinformationen zugreifen.
Wenn der Benutzer die Berechtigungsanforderung genehmigt, wird die Einwilligung erfasst. Dadurch ist bei nachfolgenden Anmeldevorgängen keine erneute Einwilligung des Benutzers erforderlich.
Anfordern der Einwilligung für einen gesamten Mandanten über die Administratoreinwilligung
Das Anfordern der Einwilligung für einen gesamten Mandanten erfordert die Administratoreinwilligung. Die im Namen einer Organisation erteilte Administratorgenehmigung erfordert weiterhin die für die App registrierten statischen Berechtigungen. Legen Sie diese Berechtigungen im Portal für die App-Registrierung fest, wenn ein*e Administrator*in die Einwilligung im Namen der gesamten Organisation erteilen muss.
Administratoreinwilligung für delegierte Berechtigungen
Wenn Ihre Anwendung delegierte Berechtigungen anfordert, die eine Administratoreinwilligung erfordern, erhält der*die Benutzer*in eine Fehlermeldung, die besagt, dass er*sie nicht berechtigt ist, die Berechtigungen für Ihre Anwendung zu genehmigen. Der*Die Benutzer*in muss den*die Administrator*in um Zugriff auf die App bitten. Wenn der*die Administrator*in die Einwilligung für den gesamten Mandanten erteilt, wird den Benutzer*innen der Organisation keine Einwilligungsseite für die Anwendung angezeigt, es sei denn, die zuvor erteilten Berechtigungen werden widerrufen oder die Anwendung fordert inkrementell eine neue Berechtigung an.
Administrator*innen, die dieselbe Anwendung verwenden, wird die Aufforderung zur Administratoreinwilligung angezeigt. Die Aufforderung zur Administratoreinwilligung enthält ein Kontrollkästchen, mit dem sie der Anwendung im Namen der Benutzer für den gesamten Mandanten Zugriff auf die angeforderten Daten gewähren können. Weitere Informationen zur Benutzer- und Administratoreinwilligung finden Sie unter Benutzeroberfläche für die Anwendungseinwilligung.
Hier finden Sie Beispiele für delegierte Berechtigungen für Microsoft Graph, die eine Administratoreinwilligung erfordern:
- Lesen der vollständigen Profile aller Benutzer mit „User.Read.All“
- Schreiben von Daten in das Verzeichnis einer Organisation mit „Directory.ReadWrite.All“
- Lesen aller Gruppen im Verzeichnis einer Organisation mit „Groups.Read.All“
Die vollständige Liste der Microsoft Graph-Berechtigungen finden Sie in der Referenz zu Microsoft Graph-Berechtigungen.
Sie können auch Berechtigungen für Ihre eigenen Ressourcen konfigurieren, sodass die Administratoreinwilligung erforderlich ist. Weitere Informationen zum Hinzufügen von Bereichen, die eine Administratoreinwilligung erfordern, finden Sie unterHinzufügen eines Bereichs, der die Administratoreinwilligung erfordert.
Einige Organisationen ändern möglicherweise die Standardrichtlinie für die Benutzereinwilligung für den Mandanten. Wenn Ihre Anwendung Zugriff auf Berechtigungen anfordert, werden diese anhand dieser Richtlinien ausgewertet. Der*Die Benutzer*in muss möglicherweise die Administratoreinwilligung anfordern, auch wenn diese nicht standardmäßig erforderlich ist. Informationen dazu, wie Administrator*innen Einwilligungsrichtlinien für Anwendungen verwalten, finden Sie unter Verwalten von App-Einwilligungsrichtlinien.
Hinweis
Wenn bei Anforderungen an die Autorisierungs-, Token- oder Zustimmungsendpunkte für die Microsoft Identity Platform der Ressourcenbezeichner im Bereichsparameter weggelassen wird, wird angenommen, dass Microsoft Graph die Ressource ist. scope=User.Read entspricht beispielsweise https://graph.microsoft.com/User.Read
.
Administratoreinwilligung für Anwendungsberechtigungen
Anwendungsberechtigungen erfordern immer die Administratoreinwilligung. Anwendungsberechtigungen haben keinen Benutzerkontext, und die Einwilligungsserteilung erfolgt nicht im Namen eines bestimmten Benutzers oder einer bestimmten Benutzerin. Stattdessen werden der Clientanwendung direkt Berechtigungen erteilt. Diese Arten von Berechtigungen werden nur von Daemondiensten und anderen nicht interaktiven Anwendungen verwendet, die im Hintergrund ausgeführt werden. Administratoren müssen die Berechtigungen im Voraus konfigurieren und die Administratoreinwilligung über das Microsoft Entra Admin Center erteilen.
Administratoreinwilligung für mehrinstanzenfähige Anwendungen
Falls die Anwendung, die die Berechtigung anfordert, eine mehrinstanzenfähige Anwendung ist, ist die Anwendungsregistrierung nur in dem Mandanten vorhanden, in dem sie erstellt wurde. Daher können Berechtigungen nicht im lokalen Mandanten konfiguriert werden. Wenn die Anwendung Berechtigungen anfordert, die eine Administratoreinwilligung erfordern, muss der*die Administrator*in im Namen der Benutzer*innen zustimmen. Um diesen Berechtigungen zuzustimmen, müssen sich die Administrator*innen selbst bei der Anwendung anmelden, damit die Anmeldeoberfläche für die Administratoreinwilligung angezeigt wird. Informationen zum Einrichten der Administratoreinwilligung für mehrinstanzenfähige Anwendungen finden Sie unter Aktivieren von mehrinstanzenfähigen Anmeldungen.
Ein*e Administrator*in kann eine Einwilligung für eine Anwendung mit den folgenden Optionen erteilen.
Empfohlen: Anmelden des Benutzers bei Ihrer App
Wenn Sie eine Anwendung erstellen, die die Administratorzustimmung erfordert, benötigt die Anwendung in der Regel eine Seite oder Ansicht, auf der der*die Administrator*in die Berechtigungen für die Anwendung genehmigen kann. Bei dieser Seite kann es sich um Folgendes handeln:
- Komponente des Registrierungsflusses der App
- Teil der App-Einstellungen
- Dedizierter Verbindungsfluss
In vielen Fällen ist es sinnvoll, dass die Anwendung diese „Verbindungsansicht“ erst anzeigt, wenn ein*e Benutzer*in sich mit einem Geschäfts-, Schul- oder Unikonto von Microsoft angemeldet hat.
Durch die Anmeldung des Benutzers bzw. der Benutzerin bei der App können Sie die Organisation identifizieren, der der*die Administrator*in angehört, bevor Sie sie zur Genehmigung der nötigen Berechtigungen auffordern. Dieser Schritt ist zwar nicht unbedingt erforderlich, kann aber dazu beitragen, eine intuitivere Benutzeroberfläche für Ihre Organisationsbenutzer zu erstellen.
Gehen Sie gemäß den Tutorials zum Microsoft Identity Platform-Protokoll vor, um den Benutzer anzumelden.
Anfordern der Berechtigungen im App-Registrierungsportal
Im App-Registrierungsportal können Anwendungen die von ihnen benötigten Berechtigungen auflisten – einschließlich delegierter Berechtigungen und Anwendungsberechtigungen. Dieses Setup ermöglicht die Verwendung des .default
-Bereichs und der Option Administratoreinwilligung erteilen im Microsoft Entra Admin Center.
Im Allgemeinen sollten die Berechtigungen für eine bestimmte Anwendung statisch definiert werden. Dabei sollte es sich um eine übergeordnete Gruppe der Berechtigungen handeln, die von der Anwendung dynamisch oder inkrementell angefordert werden.
Hinweis
Anwendungsberechtigungen können nur über .default
angefordert werden. Wenn Ihre Anwendung Anwendungsberechtigungen benötigt, müssen Sie sicherstellen, dass diese im App-Registrierungsportal aufgeführt sind.
So konfigurieren Sie die Liste statisch angeforderter Berechtigungen für eine Anwendung:
- Melden Sie sich beim Microsoft Entra Admin Center mindestens als Cloudanwendungsadministrator an.
- Browsen Sie zu Identität>Anwendungen>App-Registrierungen>Alle Anwendungen.
- Wählen Sie eine Anwendung aus, oder erstellen Sie ggf. eine App.
- Wählen Sie auf der Seite Übersicht der Anwendung unter Verwalten Folgendes aus: API-Berechtigungen>Berechtigung hinzufügen.
- Wählen Sie in der Liste der verfügbaren APIs die Option Microsoft Graph aus. Fügen Sie dann die von Ihrer Anwendung benötigten Berechtigungen hinzu.
- Klicken Sie auf Berechtigungen hinzufügen.
Erfolgreiche Antwort
Wenn der Administrator die Berechtigungen für Ihre Anwendung genehmigt, lautet die erfolgreiche Antwort wie folgt:
GET http://localhost/myapp/permissions?tenant=aaaabbbb-0000-cccc-1111-dddd2222eeee&state=state=12345&admin_consent=True
Parameter | BESCHREIBUNG |
---|---|
tenant |
Der Verzeichnismandant, der Ihrer Anwendung die angeforderten Berechtigungen erteilt hat, im GUID-Format. |
state |
Ein in der Anforderung enthaltener Wert, der auch in der Tokenantwort zurückgegeben wird. Es kann sich um eine Zeichenfolge mit jedem beliebigen Inhalt handeln. Der Status wird verwendet, um Informationen über den Status des Benutzers in der Anwendung zu codieren, bevor die Authentifizierungsanforderung aufgetreten ist, z. B. Informationen zu der Seite oder Ansicht, die der*die Benutzer*in besucht hat. |
admin_consent |
Wird auf True festgelegt. |
Nachdem Sie eine erfolgreiche Antwort vom Endpunkt für die Administratorzustimmung erhalten haben, erhält Ihre Anwendung die Berechtigungen, die sie angefordert hat. Als Nächstes können Sie ein Token für die Ressource anfordern, die Sie möchten.
Fehlerantwort
Wenn der Administrator die Berechtigungen für Ihre App nicht genehmigt, lautet die Fehlerantwort wie folgt:
GET http://localhost/myapp/permissions?error=permission_denied&error_description=The+admin+canceled+the+request
Parameter | Beschreibung |
---|---|
error |
Eine Zeichenfolge mit einem Fehlercode, die zum Klassifizieren der auftretenden Fehlertypen verwendet werden kann. Sie kann auch verwendet werden, um auf Fehler zu reagieren. |
error_description |
Eine spezifische Fehlermeldung, mit der ein Entwickler die Grundursache eines Fehlers identifizieren kann. |
Verwenden von Berechtigungen nach der Einwilligung
Nachdem der*die Benutzer*in die Berechtigungen für Ihre Anwendung genehmigt hat, kann Ihre App Zugriffstoken abrufen, die die Berechtigung der App darstellen, in irgendeiner Weise auf die Ressource zuzugreifen. Ein Zugriffstoken kann nur für eine einzelne Ressource verwendet werden. Allerdings ist darin jede Berechtigung codiert, die Ihrer Anwendung für diese Ressource erteilt wurde. Um ein Zugriffstoken zu erhalten, kann Ihre Anwendung eine Anforderung an den Microsoft Identity Platform-Tokenendpunkt senden. Beispiel:
POST common/oauth2/v2.0/token HTTP/1.1
Host: https://login.microsoftonline.com
Content-Type: application/json
{
"grant_type": "authorization_code",
"client_id": "00001111-aaaa-2222-bbbb-3333cccc4444",
"scope": "https://microsoft.graph.com/Mail.Read https://microsoft.graph.com/mail.send",
"code": "AwABAAAAvPM1KaPlrEqdFSBzjqfTGBCmLdgfSTLEMPGYuNHSUYBrq...",
"redirect_uri": "https://localhost/myapp",
"client_secret": "A1bC2dE3f..." // NOTE: Only required for web apps
}
Sie können das resultierende Zugriffstoken in HTTP-Anforderungen an die Ressource verwenden. Es zeigt der Ressource zuverlässig, dass die Anwendung über die erforderliche Berechtigung für eine bestimmte Aufgabe verfügt.
Weitere Informationen zum OAuth 2.0-Protokoll und zum Abrufen von Zugriffstoken finden Sie in der Protokollreferenz zum Microsoft Identity Platform-Endpunkt.