Authentifizierungs und Autorisierungsgrundlagen
Um ein Zugriffstoken zu erhalten, muss Ihre App beim Microsoft Identity Platform registriert sein und von einem Benutzer oder Administrator Microsoft Graph-Berechtigungen erteilt werden.
Dieser Artikel bietet eine Übersicht über die Microsoft Identity Platform, Zugriffstoken und wie Ihre App Zugriffstoken erhalten kann. Weitere Informationen zur Microsoft Identity Platform finden Sie unter Was ist die Microsoft Identity Platform?. Wenn Sie wissen, wie Sie eine App in die Microsoft Identity Platform integrieren, um Token zu erhalten, lesen Sie die Informationen und Beispiele speziell für Microsoft Graph im Abschnitt Nächste Schritte.
Registrieren Ihrer App bei Microsoft Identity Platform
Bevor Ihre App ein Token von Microsoft Identity Platform beziehen kann, muss es im Azure-Portal registriert werden. Durch die Registrierung wird Ihre App in Microsoft Identity Platform integriert, und es werden die zum Abrufen von Token verwendeten Informationen festgelegt, beispielsweise:
- Anwendungs-ID: Ein eindeutiger Bezeichner, der von Microsoft Identity Platform zugewiesen wird.
- Umleitungs-URI/-URL: Ein oder mehrere Endpunkte, an denen Ihre App Antworten von Microsoft Identity Platform empfängt. (Bei nativen und mobilen Apps wird der URI vom Microsoft Identity Platform zugewiesen.)
- Geheimer Clientschlüssel: Ein Kennwort oder ein Paar aus öffentlichem und privatem Schlüssel, das Ihre App für die Authentifizierung beim Microsoft Identity Platform verwendet. (Für native oder mobile Apps nicht erforderlich.)
Die während der Registrierung konfigurierten Eigenschaften werden in der Anforderung verwendet. Beispiel: in der folgenden Tokenanforderung: client_id ist die Anwendungs-ID, redirect_uri ist eine der registrierten Umleitungs-URIs Ihrer App, und client_secret ist der geheime Clientschlüssel.
// Line breaks for legibility only
POST /common/oauth2/v2.0/token HTTP/1.1
Host: https://login.microsoftonline.com
Content-Type: application/x-www-form-urlencoded
client_id=6731de76-14a6-49ae-97bc-6eba6914391e
&scope=user.read%20mail.read
&code=OAAABAAAAiL9Kn2Z27UubvWFPbm0gLWQJVzCTE9UkP3pSx1aXxUjq3n8b2JRLk4OxVXr...
&redirect_uri=http%3A%2F%2Flocalhost%2Fmyapp%2F
&grant_type=authorization_code
&client_secret=JqQX2PNo9bpM0uEihUPzyrh // NOTE: Only required for web apps
Zugriffsszenarien
Die Methode, die eine App für die Authentifizierung beim Microsoft Identity Platform verwendet, hängt davon ab, wie die App auf die Daten zugreifen soll. Dieser Zugriff kann auf eine von zwei Arten erfolgen, wie in der folgenden Abbildung dargestellt.
- Delegierter Zugriff: Eine App, die im Namen eines angemeldeten Benutzers agiert.
- Nur-App-Zugriff: Eine App, die mit ihrer eigenen Identität agiert.
Delegierter Zugriff (Zugriff im Namen eines Benutzers)
In diesem Zugriffsszenario hat sich ein Benutzer bei einer Clientanwendung angemeldet, und die Clientanwendung ruft Microsoft Graph im Namen des Benutzers auf. Sowohl der Client als auch der Benutzer müssen autorisiert sein, die Anforderung zu stellen.
Delegierter Zugriff erfordert delegierte Berechtigungen, die auch als Bereiche bezeichnet werden. Bereiche sind Berechtigungen, die von einer bestimmten Ressource verfügbar gemacht werden, und stellen die Vorgänge dar, die eine App im Namen eines Benutzers ausführen kann.
Da sowohl die App als auch der Benutzer für die Anforderung autorisiert werden müssen, gewährt die Ressource der Client-App die delegierten Berechtigungen, damit die Client-App im Namen des angegebenen Benutzers auf Daten zugreifen kann. Für den Benutzer sind die Aktionen, die er für die Ressource ausführen kann, von den Berechtigungen abhängig, die er für den Zugriff auf die Ressource hat. Beispielsweise kann der Benutzer der Besitzer der Ressource sein oder ihm über ein rollenbasiertes Zugriffssteuerungssystem (Role-Based Access Control System, RBAC) wie Azure AD RBAC eine bestimmte Rolle zugewiesen werden.
Nur App-Zugriff (Zugriff ohne Benutzer)
In diesem Zugriffsszenario kann die Anwendung ohne angemeldeten Benutzer eigenständig mit Daten interagieren. Der reine App-Zugriff wird in Szenarien wie Automatisierung und Sicherung verwendet und hauptsächlich von Apps verwendet, die als Hintergrunddienste oder Daemons ausgeführt werden. Es ist geeignet, wenn es nicht wünschenswert ist, einen Benutzer angemeldet zu haben, oder wenn die erforderlichen Daten nicht auf einen einzelnen Benutzer festgelegt werden können.
Apps erhalten über eine der folgenden Methoden Berechtigungen zum Aufrufen von Microsoft Graph mit ihrer eigenen Identität:
- Wenn der App Anwendungsberechtigungen zugewiesen werden, auch als App-Rollen bezeichnet.
- Wenn der App der Besitz der Ressource zugewiesen wird, die sie verwalten möchte.
Hinweis
Eine App kann berechtigungen auch über integrierte Azure AD-Rollen erhalten. Diese Berechtigungen beschränken die App nicht auf das Aufrufen von Microsoft Graph-APIs.
Microsoft Graph-Berechtigungen
Microsoft Graph macht präzise Berechtigungen verfügbar, die den Zugriff von Apps auf Microsoft Graph-Ressourcen wie Benutzer, Gruppen und E-Mail steuern. Als Entwickler entscheiden Sie basierend auf dem Zugriffsszenario und den vorgängen, die Sie ausführen möchten, welche Microsoft Graph-Berechtigungen für Ihre App anzufordern sind.
Microsoft Graph macht zwei Arten von Berechtigungen für die unterstützten Zugriffsszenarien verfügbar:
- Delegierte Berechtigungen
- Anwendungsberechtigungen
Delegierte Berechtigungen, auch als Bereiche bezeichnet, ermöglichen es der Anwendung, im Namen des angemeldeten Benutzers zu handeln. Anwendungsberechtigungen, auch als App-Rollen bezeichnet, ermöglichen es der App, eigenständig auf Daten zuzugreifen, ohne dass ein Benutzer angemeldet ist.
Wenn sich ein Benutzer bei Ihrer App anmeldet, erhält er oder in einigen Fällen auch ein Administrator die Möglichkeit, den delegierten Berechtigungen zuzustimmen. Wenn sie ihre Zustimmung erteilen, erhält Ihre App Zugriff auf die ressourcen und apIs, die sie angefordert hat. Für Apps, die ohne angemeldeten Benutzer auf Ressourcen und APIs zugreifen, können die Anwendungsberechtigungen bei der Installation der App von einem Administrator vorab zugestimmt werden.
Hinweis
Als bewährte Methode sollten Sie die Berechtigungen mit den wenigsten Rechten anfordern, die Ihre App benötigt, um auf Daten zuzugreifen und korrekt zu funktionieren. Die Anforderung von Berechtigungen mit mehr als den erforderlichen Rechten ist im Hinblick auf die Sicherheit nicht zu empfehlen und kann dazu führen, dass Benutzer ihre Zustimmung verweigern und die Nutzung Ihrer App beeinträchtigt wird.
Weitere Informationen zu Microsoft Graph-Berechtigungen und deren Verwendung finden Sie unter Übersicht über Microsoft Graph-Berechtigungen.
Zugriffstoken
Eine Anwendung sendet eine Authentifizierungsanforderung, um Zugriffstoken abzurufen, die sie zum Aufrufen einer API verwendet. Zugriffstoken, die vom Microsoft Identity Platform ausgestellt werden, enthalten Informationen (Ansprüche). Web-APIs, die durch die Microsoft Identity Platform geschützt sind, z. B. Microsoft Graph, verwenden die Ansprüche, um den Aufrufer zu überprüfen und sicherzustellen, dass der Aufrufer über die erforderlichen Berechtigungen zum Ausführen des angeforderten Vorgangs verfügt. Der Aufrufer sollte Zugriffstoken als nicht sichtbare Zeichenfolgen behandeln, da der Inhalt des Tokens nur für die API vorgesehen ist. Schützen Sie Zugriffstoken beim Aufrufen von Microsoft Graph immer, indem Sie sie über einen sicheren Kanal übertragen, der TLS (Transport Layer Security) nutzt.
Das folgende Beispiel zeigt ein Microsoft Identity Platform-Zugriffstoken:
eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiI2ZTc0MTcyYi1iZTU2LTQ4NDMtOWZmNC1lNjZhMzliYjEyZTMiLCJpc3MiOiJodHRwczovL2xvZ2luLm1pY3Jvc29mdG9ubGluZS5jb20vNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3L3YyLjAiLCJpYXQiOjE1MzcyMzEwNDgsIm5iZiI6MTUzNzIzMTA0OCwiZXhwIjoxNTM3MjM0OTQ4LCJhaW8iOiJBWFFBaS84SUFBQUF0QWFaTG8zQ2hNaWY2S09udHRSQjdlQnE0L0RjY1F6amNKR3hQWXkvQzNqRGFOR3hYZDZ3TklJVkdSZ2hOUm53SjFsT2NBbk5aY2p2a295ckZ4Q3R0djMzMTQwUmlvT0ZKNGJDQ0dWdW9DYWcxdU9UVDIyMjIyZ0h3TFBZUS91Zjc5UVgrMEtJaWpkcm1wNjlSY3R6bVE9PSIsImF6cCI6IjZlNzQxNzJiLWJlNTYtNDg0My05ZmY0LWU2NmEzOWJiMTJlMyIsImF6cGFjciI6IjAiLCJuYW1lIjoiQWJlIExpbmNvbG4iLCJvaWQiOiI2OTAyMjJiZS1mZjFhLTRkNTYtYWJkMS03ZTRmN2QzOGU0NzQiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJhYmVsaUBtaWNyb3NvZnQuY29tIiwicmgiOiJJIiwic2NwIjoiYWNjZXNzX2FzX3VzZXIiLCJzdWIiOiJIS1pwZmFIeVdhZGVPb3VZbGl0anJJLUtmZlRtMjIyWDVyclYzeERxZktRIiwidGlkIjoiNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3IiwidXRpIjoiZnFpQnFYTFBqMGVRYTgyUy1JWUZBQSIsInZlciI6IjIuMCJ9.pj4N-w_3Us9DrBLfpCt
Zum Aufrufen von Microsoft Graph sendet die App eine Autorisierungsanforderung, indem sie das Zugriffstoken als Bearertoken an den Autorisierungsheader in einer HTTP-Anforderung anfügt. Der folgende Aufruf gibt beispielweise die Profilinformationen des angemeldeten Benutzers zurück (das Zugriffstoken wurde zur besseren Lesbarkeit gekürzt):
GET https://graph.microsoft.com/v1.0/me/ HTTP/1.1
Host: graph.microsoft.com
Authorization: Bearer EwAoA8l6BAAU ... 7PqHGsykYj7A0XqHCjbKKgWSkcAg==
Zugriffstoken sind eine Art von Sicherheitstoken, das vom Microsoft Identity Platform bereitgestellt wird. Sie sind kurzlebig, weisen jedoch eine variable Standardlebensdauer auf.
Abrufen eines Zugriffstokens
Wie die meisten Entwickler verwenden Sie wahrscheinlich Authentifizierungsbibliotheken, um Ihre Tokeninteraktionen mit dem Microsoft Identity Platform zu verwalten. Authentifizierungsbibliotheken abstrahieren viele Protokolldetails wie Validierung, Cookieverarbeitung, Tokenzwischenspeicherung und Aufrechterhaltung sicherer Verbindungen vom Entwickler und ermöglichen Es Ihnen, sich auf die Funktionalität Ihrer App zu konzentrieren. Microsoft veröffentlicht Open-Source-Clientbibliotheken und Servermiddleware.
Für den Microsoft Identity Platform-Endpunkt:
- MsAL-Clientbibliotheken (Microsoft Authentication Library) sind für verschiedene Frameworks verfügbar, einschließlich für .NET, JavaScript, Android und iOS. Alle Plattformen befinden sich in der produktionsgestützten Vorschauphase, und für den Fall, dass Breaking Changes eingeführt werden, garantiert Microsoft einen Pfad zum Upgrade.
- Servermiddleware von Microsoft ist für .NET Core und ASP.NET (OWIN OpenID Connect und OAuth) und für Node.js (Microsoft Identity Platform Passport.js) verfügbar.
- Die Microsoft Identity Platform ist auch mit vielen Authentifizierungsbibliotheken von Drittanbietern kompatibel.
Eine vollständige Liste der Microsoft-Clientbibliotheken, Microsoft-Servermiddleware und kompatiblen Bibliotheken von Drittanbietern finden Sie in Microsoft Identity Platform Dokumentation.
Sie brauchen keine Authentifizierungsbibliothek zu verwenden, um ein Zugriffstoken zu abzurufen. Informationen zur direkten Verwendung der Microsoft Identity Platform-Endpunkte ohne Die Hilfe einer Authentifizierungsbibliothek finden Sie unter Microsoft Identity Platform-Dokumentationsbibliotheken.
Siehe auch
- Microsoft Identity Platform Dokumentation.
- Wählen Sie basierend auf dem Szenario einen Microsoft Graph-Authentifizierungsanbieter aus.
- Übersicht über Microsoft Graph-Berechtigungen.
- Auf der Seite Erste Schritte finden Sie die Bibliotheken, Beispiele, Schulungsinhalte und weitere Ressourcen für Ihre bevorzugte Plattform.
- Siehe unsere Microsoft Graph-Beispiele auf GitHub.