Ohne Benutzer zugreifen
Um Microsoft Graph aufzurufen, muss eine App ein Zugriffstoken vom Microsoft Identity Platform abrufen. Dieses Zugriffstoken enthält Informationen dazu, ob die App für den Zugriff auf Microsoft Graph im Namen eines angemeldeten Benutzers oder mit einer eigenen Identität autorisiert ist. Dieser Artikel enthält Anleitungen dazu, wie eine App mit ihrer eigenen Identität auf Microsoft Graph zugreifen kann, die auch als app-only-Zugriff bezeichnet wird.
In diesem Artikel werden die unformatierten HTTP-Anforderungen beschrieben, die für eine App erforderlich sind, um Microsoft Graph mit einer eigenen Identität mithilfe eines beliebten Flows namens OAuth 2.0-Clientanmeldeinformationen aufzurufen. Alternativ können Sie das Schreiben von unformatierten HTTP-Anforderungen vermeiden und eine von Microsoft erstellte oder unterstützte Authentifizierungsbibliothek verwenden, mit der Sie Zugriffstoken abrufen und Microsoft Graph aufrufen können. Weitere Informationen finden Sie unter Verwenden der Microsoft Authentication Library (MSAL).For more information, see Use the Microsoft Authentication Library (MSAL).
In diesem Artikel führen Sie die folgenden Schritte unter Verwenden des Clientanmeldeinformationsflows aus:
- Konfigurieren Sie Microsoft Graph-Anwendungsberechtigungen für die App.
- Fordern Sie die Zustimmung des Administrators an.
- Fordern Sie ein Zugriffstoken an.
- Rufen Sie Microsoft Graph mithilfe des Zugriffstokens auf.
Voraussetzungen
Bevor Sie mit den Schritten in diesem Artikel fortfahren:
- Machen Sie sich mit den Authentifizierungs- und Autorisierungskonzepten im Microsoft Identity Platform vertraut. Weitere Informationen finden Sie unter Grundlagen zu Authentifizierung und Autorisierung.
- Registrieren Sie die App bei Microsoft Entra ID. Weitere Informationen finden Sie unter Registrieren einer Anwendung beim Microsoft Identity Platform. Speichern Sie die folgenden Werte aus der App-Registrierung:
- Die Anwendungs-ID (im Microsoft Entra Admin Center als Objekt-ID bezeichnet).
- Ein geheimer Clientschlüssel (Anwendungskennwort), ein Zertifikat oder anmeldeinformationen für eine Verbundidentität.
- Ein Umleitungs-URI für die App zum Empfangen von Tokenantworten von Microsoft Entra ID.
- Ein Umleitungs-URI für den Dienst zum Empfangen von Administratoreinwilligungsantworten , wenn die App Funktionen zum Anfordern der Administratoreinwilligung implementiert.
Schritt 1: Konfigurieren von Berechtigungen für Microsoft Graph
Microsoft Graph macht Anwendungsberechtigungen für Apps verfügbar, die Microsoft Graph mit ihrer eigenen Identität aufrufen. Diese Berechtigungen erfordern immer die Zustimmung des Administrators.
Sie konfigurieren die Anwendungsberechtigungen, die die App benötigt, wenn Sie die App registrieren. Ein Administrator kann diesen Berechtigungen entweder mithilfe des Microsoft Entra Admin Center zustimmen, wenn er die App in seiner organization installiert, oder Sie können eine Registrierungsoberfläche in der App bereitstellen, über die Administratoren den von Ihnen konfigurierten Berechtigungen zustimmen können. Sobald Microsoft Entra ID die Administratorzustimmung erfasst, kann die App Token anfordern, ohne erneut die Zustimmung anfordern zu müssen.
Führen Sie die folgenden Schritte aus, um Anwendungsberechtigungen für die App in der App-Registrierung auf dem Microsoft Entra Admin Center zu konfigurieren:
- Wählen Sie auf der Seite API-Berechtigungen der Anwendung Berechtigung hinzufügen aus.
- Wählen Sie Microsoft Graph> aus, und wählen Sie Anwendungsberechtigungen aus.
- Wählen Sie im Dialogfeld Berechtigungen auswählen die Berechtigungen aus, die für die App konfiguriert werden sollen.
Der folgende Screenshot zeigt das Dialogfeld Berechtigungen auswählen für Microsoft Graph-Anwendungsberechtigungen.
Wichtig
Konfigurieren Sie immer den Berechtigungssatz mit den geringsten Berechtigungen, die für die App erforderlich sind. Weitere Informationen finden Sie unter Bewährte Methoden für die Verwendung von Microsoft Graph-Berechtigungen.
Schritt 2: Anfordern der Administratorgenehmigung
Administratoren können die Berechtigungen, die Ihre App benötigt, am Microsoft Entra Admin Center erteilen. Wenn Sie jedoch keinen Zugriff auf die Microsoft Entra Admin Center haben, können Sie mithilfe des Microsoft Identity Platform-Endpunkts /adminconsent
eine Registrierungsoberfläche für Administratoren bereitstellen.
Wichtig
Wenn Sie Änderungen an den konfigurierten Berechtigungen vornehmen, müssen Sie auch den Prozess für die Administratorzustimmung wiederholen. Änderungen, die im App-Registrierungsportal vorgenommen werden, werden erst widerspiegelt, wenn ein autorisierter Administrator, z. B. ein Administrator mit privilegierter Rolle, die App erneut verwendet.
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 HTTP/1.1
Parameter | Bedingung | Beschreibung |
---|---|---|
tenant | Erforderlich | Der Mandant, von dem Sie die Berechtigung anfordern möchten. Der Wert kann im GUID- oder Anzeigenamenformat vorliegen. Wenn Sie nicht wissen, zu welchem Mandanten der Benutzer gehört, und Sie möchten, dass er sich mit einem beliebigen Mandanten anmeldet, 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 gesendet werden soll, damit ihre App verarbeitet werden soll. Sie muss mit einer der Umleitungs-URIs übereinstimmen, die Sie im Portal registriert haben. Er muss URL-codiert sein und kann zusätzliche Pfadsegmente enthalten. |
state | Empfohlen | Ein Wert, der in der Anforderung enthalten ist, der auch in der Tokenantwort zurückgegeben wird. Dabei kann es sich um eine Zeichenfolge mit beliebigen Inhalten handeln. Der Zustand wird verwendet, um Informationen zum Status des Benutzers in der App zu codieren, bevor die Authentifizierungsanforderung aufgetreten ist, z. B. die Seite oder Ansicht, auf der er sich befand. |
Oberfläche zur Administratorzustimmung
Bei Anforderungen an den /adminconsent
Endpunkt erzwingt Microsoft Entra ID, dass sich nur ein autorisierter Administrator anmelden kann, um die Anforderung abzuschließen. Der Administrator wird aufgefordert, alle Anwendungsberechtigungen zu genehmigen, die Sie für Ihre App im App-Registrierungsportal angefordert haben.
Der folgende Screenshot zeigt ein Beispiel für das Zustimmungsdialogfeld, das Microsoft Entra ID dem Administrator präsentiert:
Antwort
Wenn der Administrator die Berechtigungen für Ihre Anwendung genehmigt, sieht die erfolgreiche Antwort wie folgt aus:
// Line breaks are for legibility only.
https://localhost/myapp/permissions?admin_consent=True&tenant=38d49456-54d4-455d-a8d6-c383c71e0a6d&state=12345#
Parameter | Beschreibung |
---|---|
tenant | Der Mandant, der Ihrer Anwendung die angeforderten Berechtigungen im GUID-Format erteilt hat. |
state | Ein Wert, der in der Anforderung enthalten ist, der auch in der Tokenantwort zurückgegeben wird. Dabei kann es sich um eine Zeichenfolge mit beliebigen Inhalten handeln. Der Zustand wird verwendet, um Informationen zum Status des Benutzers in der App zu codieren, bevor die Authentifizierungsanforderung aufgetreten ist, z. B. die Seite oder Ansicht, auf der er sich befand. |
admin_consent | Legen Sie diesen Wert auf True fest. |
Schritt 3: Anfordern 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 als Wert für den scope
Parameter in der Tokenanforderung übergebenhttps://graph.microsoft.com/.default
.
Tokenanforderung
Senden Sie eine POST-Anforderung an den /token
Identity Platform-Endpunkt, um ein Zugriffstoken abzurufen. In dieser Anforderung verwendet der Client den geheimen Clientschlüssel.
// 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=qWgdYA....L1qKv5bPX
&grant_type=client_credentials
Parameter | Bedingung | Beschreibung |
---|---|---|
tenant | Erforderlich | Der Mandant, von dem Sie die Berechtigung anfordern möchten. Der Wert kann im GUID- oder Anzeigenamenformat vorliegen. |
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 sie 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. Ihre App kann dieses Token in Aufrufen von Microsoft Graph verwenden. |
expires_in | Gültigkeit des Zugriffstokens (in Sekunden). |
ext_expires_in | Wird verwendet, um eine verlängerte Lebensdauer für das Zugriffstoken anzugeben und resilienz zu unterstützen, wenn der Tokenausstellungsdienst nicht reagiert. |
token_type | Gibt den Tokentypwert an. Der einzige Typ, der Microsoft Entra ID unterstützt, ist Bearer . |
Schritt 4: Verwenden des Zugriffstokens zum Aufrufen von Microsoft Graph
Nachdem Sie über ein Zugriffstoken verfügen, verwendet die App es, um Microsoft Graph aufzurufen, indem das Zugriffstoken als Bearertoken an den Autorisierungsheader in einer HTTP-Anforderung angefügt wird. Die folgende Anforderung ruft alle Benutzer im Mandanten ab. Die App muss über die Berechtigung User.Read.All verfügen, um diese API aufrufen zu können.
GET https://graph.microsoft.com/v1.0/users HTTP/1.1
Authorization: Bearer eyJ0eXAiO ... 0X2tnSQLEANnSPHY0gKcgw
Host: graph.microsoft.com
Eine erfolgreiche Antwort sieht wie folgt 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
Date: Wed, 26 Apr 2017 19:53:49 GMT
Content-Length: 407
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users",
"value": [
{
"businessPhones": [],
"displayName": "Conf Room Adams",
"givenName": null,
"jobTitle": null,
"mail": "Adams@Contoso.com",
"mobilePhone": null,
"officeLocation": null,
"preferredLanguage": null,
"surname": null,
"userPrincipalName": "Adams@Contoso.com",
"id": "8afc02cb-4d62-4dba-b536-9f6d73e9be26"
},
{
"businessPhones": [
"+1 425 555 0109"
],
"displayName": "Adele Vance",
"givenName": "Adele",
"jobTitle": "Retail Manager",
"mail": "AdeleV@Contoso.com",
"mobilePhone": null,
"officeLocation": "18/2111",
"preferredLanguage": null,
"surname": "Vance",
"userPrincipalName": "AdeleV@Contoso.com",
"id": "59bb3898-0621-4414-ac61-74f9d7201355"
}
]
}
Unterstützte App-Szenarios und Ressourcen
Apps, die Microsoft Graph mit ihrer eigenen Identität aufrufen, fallen in eine von zwei Kategorien:
- Hintergrunddienste (Daemons), die auf einem Server ausgeführt werden, ohne dass ein Benutzer angemeldet ist.
- Apps, die über einen angemeldeten Benutzer verfügen, aber auch Microsoft Graph mit ihrer eigenen Identität aufrufen. Beispielsweise, um Funktionen zu verwenden, die höhere Berechtigungen erfordern als der Benutzer.
In diesem Artikel hat die App einen geheimen Clientschlüssel als Anmeldeinformationen verwendet. Optional können Sie ein Zertifikat oder Anmeldeinformationen für Verbundidentitäten konfigurieren.
Weitere Informationen zu Apps, die Microsoft Graph mit ihrer eigenen Identität aufrufen und den Clientanmeldeinformationsflow verwenden, finden Sie unter Authentifizierungsflows und Anwendungsszenarien: Daemon-App, die eine Web-API im Namen des Daemons aufruft.
Verwenden der Microsoft Authentication Library (MSAL)
In diesem Artikel haben Sie die Details des Low-Level-Protokolls beschrieben, die nur beim manuellen Erstellen und Ausgeben von unformatierten HTTP-Anforderungen zum Ausführen des Clientanmeldeinformationsflows erforderlich sind. Verwenden Sie in Produktions-Apps eine von Microsoft erstellte oder unterstützte Authentifizierungsbibliothek, z. B. die Microsoft Authentication Library (MSAL), um Sicherheitstoken abzurufen und geschützte Web-APIs wie Microsoft Graph aufzurufen.
MSAL und andere unterstützte Authentifizierungsbibliotheken vereinfachen den Prozess für Sie, indem Sie Details wie Validierung, Cookieverarbeitung, Tokenzwischenspeicherung und sichere Verbindungen verarbeiten. damit Sie sich auf die Funktionalität Ihrer Anwendung konzentrieren können.
Greifen Sie auf die Microsoft Identity Platform Codebeispiele zu, um zu erfahren, wie Sie MSAL verwenden, um Zugriffstoken abzurufen und Microsoft Graph aufzurufen.
Verwandte Inhalte
Erkunden Sie Microsoft Graph-Tutorials , um grundlegende Anwendungen zu erstellen, die in Rein-App-Szenarien auf Daten zugreifen.