Ohne Benutzer zugreifen
Einige Apps rufen Microsoft Graph mit ihrer eigenen Identität und nicht im Namen eines Benutzers auf. In vielen Fällen handelt es sich bei diesen Apps um Hintergrunddienste oder Daemons, die auf einem Server ausgeführt werden, ohne dass ein Benutzer angemeldet ist. Ein Beispiel für eine solche App ist ein E-Mail-Archivierungsdienst, der nachts reaktiviert und ausgeführt wird. In einigen Fällen rufen Apps, bei deren Ausführung ein Benutzer angemeldet ist, Microsoft Graph auch unter ihrer eigenen Identität auf. Beispiel: Eine App muss Funktionen verwenden, die höhere Rechte in einer Organisation erfordern als jene, über die der angemeldete Benutzer verfügen mag.
Apps, die Microsoft Graph mit ihrer eigenen Identität aufrufen, verwenden den Fluss zur Gewährung von OAuth 2.0 -Clientanmeldeinformationen, um Zugriffstoken von Azure AD abzurufen. Dieser Artikel beschreibt schrittweise das grundlegende Verfahren zum Konfigurieren eines Diensts und zum Verwenden des Flusses zur Gewährung von OAuth-Clientanmeldeinformationen, um ein Zugriffstoken abzurufen.
Authentifizierungs- und Autorisierungsschritte
Befolgen Sie diese grundlegenden Schritte zum Konfigurieren eines Dienstes und zum Abrufen eines Tokens vom Microsoft Identity Platform-Endpunkt, mit dem Ihr Dienst Microsoft Graph unter seiner eigenen Identität aufrufen kann.
- Registrieren der App
- Konfigurieren von Berechtigungen für Microsoft Graph in der App
- Einholen der Administratorzustimmung
- Abrufen eines Zugriffstokens
- Aufrufen von Microsoft Graph unter Verwendung des Zugriffstokens
1. Registrieren der App
Für die Authentifizierung beim Microsoft Identity Platform-Endpunkt müssen Sie Ihre App zunächst im Azure App-Registrierungsportal registrieren. Sie können entweder ein Microsoft-Konto oder ein Geschäfts-, Schul- oder Unikonto zum Registrieren Ihrer App verwenden.
Für einen Dienst, der Microsoft Graph unter seiner eigenen Identität aufrufen soll, müssen Sie Ihre App für die Webplattform registrieren und die folgenden Werte kopieren:
- Die Anwendung-ID, die vom Azure-App-Registrierungsportal zugewiesen wurde.
- Ein geheimer Clientschlüssel oder ein Anwendungsgeheimnis, entweder ein Kennwort oder ein öffentliches/privates Schlüsselpaar (Zertifikat).
- Eine Umleitungs-URL, damit der Dienst Tokenantworten empfangen kann.
- Eine Umleitungs-URL, damit der Dienst Antworten mit Administratorzustimmung empfangen kann, wenn Ihre App Funktionen zum Anfordern der Administratorzustimmung implementiert.
Schritte zum Konfigurieren einer App mit dem Azure-App-Registrierungsportal finden Sie unter Apps registrieren.
Mit dem Fluss zur Gewährung von OAuth 2.0-Clientanmeldeinformationen authentifiziert sich Ihre App direkt beim Microsoft Identity Platform/token-Endpunkt, und zwar unter Verwendung der von Azure AD zugewiesenen Anwendungs-ID und des mit dem Portal erstellten geheimen Clientschlüssels.
2. Konfigurieren von Berechtigungen für Microsoft Graph
Microsoft Graph stellt Anwendungsberechtigungen für Apps zur Verfügung, die Microsoft Graph unter ihrer eigenen Identität aufrufen (Microsoft Graph macht auch delegierte Berechtigungen für Apps verfügbar, die Microsoft Graph im Namen eines Benutzers aufrufen).
Sie konfigurieren diese Anwendungsberechtigungen vorab, wenn Sie Ihre App registrieren. Anwendungsberechtigungen erfordern immer die Zustimmung eines Administrators. Ein Administrator kann diesen Berechtigungen entweder im Azure-Portal zustimmen, wenn die App in seiner Organisation installiert wird, oder Sie können eine Anmeldefunktionalität in der App bereitstellen, über die Administratoren den von Ihnen konfigurierten Berechtigungen zustimmen können. Sobald die Administratorzustimmung von Azure AD aufgezeichnet wurde, kann Ihre App Token anfordern, ohne dass eine erneute Zustimmung erforderlich ist. Ausführliche Informationen zu den in Microsoft Graph verfügbaren Berechtigungen finden Sie in der Berechtigungsreferenz.
Um Anwendungsberechtigungen für Ihre App im Azure-App-Registrierungsportal zu konfigurieren, wählen Sie unter den API-Berechtigungen einer Anwendung die Option Berechtigung hinzufügen aus, wählen Sie Microsoft Graph, und wählen Sie dann die von Ihrer App benötigten Berechtigungen im Dialogfeld Anwendungsberechtigungen aus.
Der folgende Screenshot zeigt das Dialogfeld Berechtigungen auswählen für Microsoft Graph-Anwendungsberechtigungen.
Wichtig
Konfigurieren Sie den Berechtigungssatz mit den geringsten Berechtigungen, die von Ihrer App zur Verbesserung der Sicherheit benötigt werden. Weitere Informationen finden Sie unter Verbessern der Sicherheit mit dem Prinzip der geringsten Berechtigung.
3. Einholen der Administratorzustimmung
Ein Administrator kann für Sie die Berechtigungen, die Ihre App benötigt, im Azure-Portal gewähren, häufig ist es jedoch besser, Administratoren eine Anmeldefunktionalität über den Microsoft Identity Platform/adminconsent-Endpunkt zur Verfügung zu stellen.
Wichtig
Wenn Sie Änderungen an den konfigurierten Berechtigungen vornehmen, müssen Sie auch den Prozess für die Administratorzustimmung wiederholen. Im App-Registrierungsportal vorgenommene Änderungen werden nicht wiedergegeben, bis die Zustimmung des Mandantenadministrators erneut erteilt wurde.
Anforderung
// Line breaks are for legibility only.
GET https://login.microsoftonline.com/{tenant}/adminconsent
?client_id=6731de76-14a6-49ae-97bc-6eba6914391e
&state=12345
&redirect_uri=https://localhost/myapp/permissions
| Parameter | Bedingung | Beschreibung |
|---|---|---|
| tenant | Erforderlich | Der Verzeichnismandant, von dem Sie eine Berechtigung anfordern möchten. Dieser Wert kann im GUID- oder Anzeigenamenformat angegeben werden. Wenn Sie nicht wissen, zu welchem Mandanten der Benutzer gehört, und Sie eine Anmeldung mit jedem Mandanten ermöglichen möchten, verwenden Sie common. |
| client_id | Erforderlich | Die Anwendungs-ID, die Ihrer App vom Azure App-Registrierungsportal zugewiesen wurde. |
| redirect_uri | Erforderlich | Der Umleitungs-URI, an den die Antwort für die Weiterarbeitung durch Ihre App gesendet werden soll. Er muss mit einem der Umleitung-URIs übereinstimmen, die Sie im Portal registriert haben. Er muss URL-codiert sein muss und kann zusätzliche Pfadsegmente enthalten. |
| state | Empfohlen | Ein Wert, der in der Anforderung enthalten ist und ebenfalls in der Tokenantwort zurückgegeben wird. Es kann eine Zeichenfolge beliebigen Inhalts sein. Der Status wird verwendet, um Informationen über den Status des Benutzers in der App vor dem Versand der Authentifizierungsanforderung zu codieren, z. B. die Seite oder die Ansicht, auf bzw. in der sich der Benutzer befunden hat. |
Oberfläche zur Administratorzustimmung
Bei an den /adminconsent-Endpunkt gesendeten Anforderungen erzwingt Azure AD, dass sich nur ein Mandantenadministrator anmelden kann, um die Anforderung auszuführen. Der Administrator wird aufgefordert, alle Anwendungsberechtigungen zu genehmigen, die Sie für Ihre App im App-Registrierungsportal angefordert haben.
Der folgende Screenshot zeigt exemplarisch das Zustimmungsdialogfeld, das dem Administrator von Azure AD angezeigt wird:
Antwort
Wenn der Administrator die Berechtigungen für Ihre Anwendung genehmigt, sieht die erfolgreiche Antwort wie folgt aus:
// Line breaks are for legibility only.
GET https://localhost/myapp/permissions
?tenant=a8990e1f-ff32-408a-9f8e-78d3b9139b95&state=12345
&admin_consent=True
| Parameter | Beschreibung |
|---|---|
| tenant | Der Verzeichnismandant, der Ihrer Anwendung die angeforderten Berechtigungen gewährt hat, im GUID-Format. |
| state | Ein Wert, der in der Anforderung enthalten ist und ebenfalls in der Tokenantwort zurückgegeben wird. Es kann eine Zeichenfolge beliebigen Inhalts sein. Der Status wird verwendet, um Informationen über den Status des Benutzers in der App vor dem Versand der Authentifizierungsanforderung zu codieren, z. B. die Seite oder die Ansicht, auf bzw. in der sich der Benutzer befunden hat. |
| admin_consent | Auf true festgelegt. |
Testen: Sie können dies selbst ausprobieren, indem Sie die Anforderung unten in einen Browser einfügen. Wenn Sie sich als globaler Administrator für einen Azure AD-Mandanten anmelden, wird Ihnen das Dialogfeld zur Administratorzustimmung für die App angezeigt. (Dies ist eine andere App als die zuvor im Screenshot des Dialogfelds zur Administratorzustimmung abgebildete.)
4. Abrufen eines Zugriffstokens
Im Fluss zur Gewährung von OAuth 2.0-Clientanmeldeinformationen verwenden Sie die Werte für Anwendungs-ID und den geheimen Clientschlüssel, die Sie beim Registrieren der App gespeichert haben, um ein Zugriffstoken direkt vom Microsoft Identity Platform/token-Endpunkt anzufordern.
Sie geben die vorkonfigurierten Berechtigungen an, indem Sie https://graph.microsoft.com/.default als Wert für den scope-Parameter in der Tokenanforderung übergeben. Einzelheiten finden Sie in der Beschreibung zum scope-Parameter in der nachstehenden Tokenanforderung.
Tokenanforderung
Sie senden eine POST-Anforderung an den Identity Platform/token-Endpunkt, um ein Zugriffstoken abzurufen:
// Line breaks are for legibility only.
POST https://login.microsoftonline.com/{tenant}/oauth2/v2.0/token HTTP/1.1
Host: login.microsoftonline.com
Content-Type: application/x-www-form-urlencoded
client_id=535fb089-9ff3-47b6-9bfb-4f1264799865
&scope=https%3A%2F%2Fgraph.microsoft.com%2F.default
&client_secret=qWgdYAmab0YSkuL1qKv5bPX
&grant_type=client_credentials
| Parameter | Bedingung | Beschreibung |
|---|---|---|
| tenant | Erforderlich | Der Verzeichnismandant, von dem Sie eine Berechtigung anfordern möchten. Dieser Wert kann im GUID- oder in einem Anzeigenamenformat angegeben werden. |
| client_id | Erforderlich | Die Anwendungs-ID, die beim Registrieren der App vom Azure App-Registrierungsportal zugewiesen wurde. |
| Bereich | Erforderlich | Der Wert, der für den scope-Parameter in dieser Anforderung übergeben wird, sollte der Bezeichner (App-ID-URI) der gewünschten Ressource mit dem angehängten Suffix .default sein. Der App-ID-URI der Microsoft Graph-Ressource lautet beispielsweise https://graph.microsoft.com/. Für Microsoft Graph ist der Wert für scope daher https://graph.microsoft.com/.default. Dieser Wert informiert den Microsoft Identity Platform Endpunkt darüber, dass alle Berechtigungen auf App-Ebene, denen der Administrator zugestimmt hat, in das Zugriffstoken eingeschlossen werden sollen. |
| client_secret | Erforderlich | Der geheime Clientschlüssel, den Sie für Ihre App im App-Registrierungsportal generiert haben. Stellen Sie sicher, dass er URL-codiert ist. |
| grant_type | Erforderlich | Muss client_credentials sein. |
Tokenantwort
Eine erfolgreiche Antwort sieht wie folgt aus:
{
"token_type": "Bearer",
"expires_in": 3599,
"ext_expires_in":3599,
"access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Ik1uQ19WWmNBVGZNNXBP..."
}
| Parameter | Beschreibung |
|---|---|
| access_token | Das angeforderte Zugriffstoken. Dieses Token kann die App in Aufrufen verwenden, die an Microsoft Graph gesendet werden. |
| expires_in | Gültigkeit des Zugriffstokens (in Sekunden). |
| ext_expires_in | Wird verwendet, um eine verlängerte Lebensdauer des Zugriffstokens anzugeben und Ausfallsicherheit zu unterstützen, wenn der Tokenausstellungsdienst nicht antwortet. |
| token_type | Gibt den Tokentypwert an. Der einzige von Azure AD unterstützte Typ ist Bearer. |
5. Aufrufen von Microsoft Graph unter Verwendung des Zugriffstokens
Sobald Sie über ein Zugriffstoken verfügen, können Sie damit Microsoft Graph aufrufen, indem Sie das Token in den Authorization-Header einer Anforderung einschließen. Die folgende Anforderung ruft das Profil eines bestimmten Benutzers ab. Ihre App muss über die Berechtigung User.Read.All verfügen, um diese API aufzurufen.
GET https://graph.microsoft.com/v1.0/users/12345678-73a6-4952-a53a-e9916737ff7f
Authorization: Bearer eyJ0eXAiO ... 0X2tnSQLEANnSPHY0gKcgw
Host: graph.microsoft.com
Eine erfolgreiche Antwort sieht ähnlich wie die folgende aus (einige Antwortheader wurden entfernt):
HTTP/1.1 200 OK
Content-Type: application/json;odata.metadata=minimal;odata.streaming=true;IEEE754Compatible=false;charset=utf-8
request-id: f45d08c0-6901-473a-90f5-7867287de97f
client-request-id: f45d08c0-6901-473a-90f5-7867287de97f
OData-Version: 4.0
Duration: 309.0273
Date: Wed, 26 Apr 2017 19:53:49 GMT
Content-Length: 407
{
"@odata.context":"https://graph.microsoft.com/v1.0/$metadata#users/$entity",
"id":"12345678-73a6-4952-a53a-e9916737ff7f",
"businessPhones":[
"+1 555555555"
],
"displayName":"Chris Green",
"givenName":"Chris",
"jobTitle":"Software Engineer",
"mail":null,
"mobilePhone":"+1 5555555555",
"officeLocation":"Seattle Office",
"preferredLanguage":null,
"surname":"Green",
"userPrincipalName":"ChrisG@contoso.onmicrosoft.com"
}
Unterstützte App-Szenarios und Ressourcen
Es gibt zwei Kategorien von Apps, die Microsoft Graph unter ihrer eigenen Identität aufrufen:
- Hintergrunddienste (Daemons), die auf einem Server ausgeführt werden, ohne dass ein Benutzer angemeldet ist.
- Apps, bei deren Ausführung ein Benutzer angemeldet ist, die Microsoft Graph aber auch unter ihrer eigenen Identität aufrufen, z. B. um Funktionen zu verwenden, die höhere Berechtigungen erfordern als jene, über die der Benutzer verfügt.
Apps, die Microsoft Graph mit ihrer eigenen Identität aufrufen, verwenden den Fluss zur Gewährung von OAuth 2.0-Clientanmeldeinformationen, um sich bei Azure AD zu authentifizieren und ein Token abzurufen. Für den Microsoft Identity Platform-Endpunkt können Sie dieses Szenario mit den folgenden Ressourcen weiter untersuchen:
- Eine ausführlichere Beschreibung des Flusses zur Gewährung von Clientanmeldeinformationen, die auch Fehlerantworten enthält, finden Sie unter Azure Active Directory v2.0 und der OAuth 2.0-Clientanmeldeinformations-Flow.
- Ein Beispiel, das Microsoft Graph von einem Dienst aus aufruft, finden Sie im v2.0-Daemonbeispiel auf GitHub.
- Weitere Informationen zu empfohlenen Authentifizierungsbibliotheken von Microsoft und Drittanbietern finden Sie unter Microsoft Identity Platform Authentifizierungsbibliotheken.
Überlegungen zum Endpunkt
Microsoft wird weiterhin den Endpunkt Azure AD unterstützen. Es gibt einige Unterschiede zwischen der Verwendung des Microsoft Identity Platform-Endpunkts und des Azure AD-Endpunkts. Bei der Verwendung des Azure AD-Endpunkts:
- Wenn Ihre App mehrinstanzenfähig ist, müssen Sie sie im Azure-Portal explizit als mehrinstanzenfähig konfigurieren.
- Es gibt keinen Endpunkt für die Administratorzustimmung, stattdessen kann Ihre App die Administratorzustimmung während der Laufzeit anfordern, indem Sie den Parameter
prompt=admin_consentzu einer Autorisierungsanforderung hinzufügen. Weitere Informationen finden Sie unter Auslösen von Azure AD-Consent Framework zur Laufzeit unter Integrieren von Anwendungen in Azure Active Directory. - Die Parameter in Autorisierungs- und Tokenanforderungen sind verschieden. Es gibt z. B. keinen
scope-Parameter in Azure AD-Endpunktanforderungen; stattdessen wird derresource-Parameter verwendet, um den URI der Ressource anzugeben (resource=https://graph.microsoft.com), für die Autorisierung (für Administratorzustimmung) oder ein Token angefordert wird.
Sie können dieses Szenario mit den folgenden Ressourcen weiter untersuchen:
- Weitere Informationen zur Verwendung des Microsoft Identity Platform-Endpunkts mit verschiedenen Arten von Anwendungen finden Sie unter Erste Schritte-Links in der Microsoft Identity Platform-Dokumentation.
- Informationen zur Microsoft Authentication Library (MSAL) und Servermiddleware für die Verwendung mit dem Microsoft Identity Platform-Endpunkt finden Sie unter Microsoft-Authentifizierungsbibliotheken.
Siehe auch
- Auswahl eines Microsoft Graph-Authentifizierungsanbieters basieren auf einem Szenario
- Erfahren Sie, wie Sie eine Web-App erstellen, die Microsoft Graph unter ihrer eigenen Identität aufruft.
- Beispiele zur Verwendung der Microsoft Identity Platform zur Sicherung verschiedener Anwendungstypen finden Sie unter Microsoft Identity Platform-Codebeispiele (v2.0 Endpunkt).
Feedback
Feedback senden und anzeigen für