Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Warnung
Dieser Inhalt gilt für den älteren v1.0-Endpunkt von Azure AD. Verwenden Sie Microsoft Identity Platform für neue Projekte.
Der OAuth 2.0-Clientanmeldeinformationserteilungsfluss ermöglicht es einem Webdienst (vertraulicher Client), seine eigenen Anmeldeinformationen zu verwenden, anstatt einen Benutzer zu imitieren, sich beim Aufrufen eines anderen Webdiensts zu authentifizieren. In diesem Szenario ist der Client in der Regel ein Webdienst der mittleren Ebene, ein Daemondienst oder eine Website. Für eine höhere Zuverlässigkeitsstufe ermöglicht Azure AD dem aufrufenden Dienst auch die Verwendung eines Zertifikats (anstelle eines freigegebenen geheimen Schlüssels) als Anmeldeinformationen.
Flussdiagramm für die Gewährung von Client-Berechtigungen
Das folgende Diagramm erläutert, wie der Fluss zur Erteilung von Clientanmeldeinformationen in Azure Active Directory (Azure AD) funktioniert.
- Die Clientanwendung authentifiziert sich beim Azure AD-Tokenausstellungsendpunkt und fordert ein Zugriffstoken an.
- Der Azure AD-Tokenausstellungsendpunkt gibt das Zugriffstoken aus.
- Das Zugriffstoken wird verwendet, um sich bei der gesicherten Ressource zu authentifizieren.
- Daten aus der gesicherten Ressource werden an die Clientanwendung zurückgegeben.
Registrieren der Dienste in Azure AD
Registrieren Sie sowohl den aufrufenden Dienst als auch den empfangenden Dienst in Azure Active Directory (Azure AD). Ausführliche Anweisungen finden Sie unter Integrieren von Anwendungen in Azure Active Directory.
Anfordern eines Zugriffstokens
Verwenden Sie zum Anfordern eines Zugriffstokens eine HTTP POST-Anfrage an den mandantenspezifischen Azure AD-Endpunkt.
https://login.microsoftonline.com/<tenant id>/oauth2/token
Anforderung von Zugriffstoken zwischen Diensten
Es gibt zwei Fälle, je nachdem, ob sich die Clientanwendung für die Sicherung durch einen freigegebenen geheimen Schlüssel oder ein Zertifikat entscheidet.
Erster Fall: Anforderung eines Zugriffstokens mit einem gemeinsamen Geheimnis
Bei Verwendung eines gemeinsamen Geheimnisses enthält eine Dienst-zu-Dienst-Zugriffstokenanforderung die folgenden Parameter:
| Parameter | Typ | BESCHREIBUNG |
|---|---|---|
| Authentifizierungstyp (grant_type) | Erforderlich | Gibt den angeforderten Grant-Typ an. Im Client-Credentials-Grant-Flow muss der Wert client_credentials sein. |
| Kunden-ID | Notwendig | Gibt die Azure AD-Client-ID des aufrufenden Webdiensts an. Um die Client-ID der aufrufenden Anwendung zu finden, klicken Sie im Azure-Portal auf Azure Active Directory, klicken Sie auf App-Registrierungen, klicken Sie auf die Anwendung. Die client_id ist die Anwendungs-ID. |
| client_secret (Kunden-Geheimnis) | Erforderlich | Geben Sie einen Schlüssel ein, der für die aufrufende Webdienst- oder Daemonanwendung in Azure AD registriert ist. Um einen Schlüssel zu erstellen, klicken Sie im Azure-Portal auf Azure Active Directory, klicken Sie auf App-Registrierungen, klicken Sie auf die Anwendung, klicken Sie auf "Einstellungen", auf "Schlüssel" und fügen Sie einen Schlüssel hinzu. Kodieren Sie dieses Geheimnis beim Bereitstellen mit URL. |
| Ressource | Erforderlich | Geben Sie den App-ID-URI des empfangenden Webdiensts ein. Um den App-ID-URI zu finden, klicken Sie im Azure-Portal auf Azure Active Directory, auf App-Registrierungen, auf die Dienstanwendung und dann auf "Einstellungen und Eigenschaften". |
Beispiel
Die folgende HTTP POST fordert ein Zugriffstoken für den https://service.contoso.com/ Webdienst an. Der client_id identifiziert den Webdienst, der das Zugriffstoken anfordert.
POST /contoso.com/oauth2/token HTTP/1.1
Host: login.microsoftonline.com
Content-Type: application/x-www-form-urlencoded
grant_type=client_credentials&client_id=625bc9f6-3bf6-4b6d-94ba-e97cf07a22de&client_secret=qkDwDJlDfig2IpeuUZYKH1Wb8q1V0ju6sILxQQqhJ+s=&resource=https%3A%2F%2Fservice.contoso.com%2F
Zweiter Fall: Anforderung eines Zugriffstokens mit einem Zertifikat
Eine Dienst-zu-Dienst-Zugriffstokenanforderung mit einem Zertifikat enthält die folgenden Parameter:
| Parameter | Typ | BESCHREIBUNG |
|---|---|---|
| grant_type | Erforderlich | Gibt den angeforderten Antworttyp an. In einem Client-Credentials-Flow muss der Wert client_credentials sein. |
| Kunden-ID | Erforderlich | Gibt die Azure AD-Client-ID des aufrufenden Webdiensts an. Um die Client-ID der aufrufenden Anwendung zu finden, klicken Sie im Azure-Portal auf Azure Active Directory, klicken Sie auf App-Registrierungen, klicken Sie auf die Anwendung. Die client_id ist die Anwendungs-ID. |
| client_assertion_type | Notwendig | Der Wert muss urn:ietf:params:oauth:client-assertion-type:jwt-bearer sein |
| client_assertion | Erforderlich | Eine Assertion (ein JSON-Webtoken), die Sie mit dem Zertifikat erstellen und signieren müssen, das Sie als Anmeldeinformationen für Ihre Anwendung registriert haben. Lesen Sie über Zertifikatsanmeldeinformationen, um zu erfahren, wie Sie Ihr Zertifikat registrieren und das Format der Assertion. |
| Ressource | Erforderlich | Geben Sie den App-ID-URI des empfangenden Webdiensts ein. Um den App-ID-URI zu finden, klicken Sie im Azure-Portal auf Azure Active Directory, auf App-Registrierungen, auf die Dienstanwendung und dann auf "Einstellungen und Eigenschaften". |
Beachten Sie, dass die Parameter fast identisch sind wie bei der Anforderung durch einen geteilt geheimen Schlüssel, außer dass der Parameter client_secret durch zwei Parameter ersetzt wird: einen client_assertion_type und client_assertion.
Beispiel
Die folgende HTTP POST fordert ein Zugriffstoken für den https://service.contoso.com/ Webdienst mit einem Zertifikat an. Der client_id identifiziert den Webdienst, der das Zugriffstoken anfordert.
POST /<tenant_id>/oauth2/token HTTP/1.1
Host: login.microsoftonline.com
Content-Type: application/x-www-form-urlencoded
resource=https%3A%2F%contoso.onmicrosoft.com%2Ffc7664b4-cdd6-43e1-9365-c2e1c4e1b3bf&client_id=97e0a5b7-d745-40b6-94fe-5f77d35c6e05&client_assertion_type=urn%3Aietf%3Aparams%3Aoauth%3Aclient-assertion-type%3Ajwt-bearer&client_assertion=eyJhbGciOiJSUzI1NiIsIng1dCI6Imd4OHRHeXN5amNScUtqRlBuZDdSRnd2d1pJMCJ9.eyJ{a lot of characters here}M8U3bSUKKJDEg&grant_type=client_credentials
Dienst-zu-Dienst-Zugriffstokenantwort
Eine Erfolgsantwort enthält eine JSON OAuth 2.0-Antwort mit den folgenden Parametern:
| Parameter | BESCHREIBUNG |
|---|---|
| Zugriffstoken | Das angeforderte Zugriffstoken. Der aufrufende Webdienst kann dieses Token verwenden, um sich beim empfangenden Webdienst zu authentifizieren. |
| Token-Typ | Gibt den Wert des Tokentyps an. Der einzige Von Azure AD unterstützte Typ ist Bearer. Weitere Informationen zu Bearertoken finden Sie im OAuth 2.0-Autorisierungsframework: Bearer Token Usage (RFC 6750). |
| läuft ab in | Die Gültigkeitsdauer des Zugriffstokens (in Sekunden). |
| läuft_ab_am | Der Zeitpunkt, zu dem das Zugriffstoken abläuft. Das Datum wird als Anzahl von Sekunden zwischen 1970-01-01T0:0:0Z UTC bis zur Ablaufzeit dargestellt. Dieser Wert wird verwendet, um die Lebensdauer von zwischengespeicherten Token zu bestimmen. |
| nicht vor | Die Zeit, ab der das Zugriffstoken genutzt werden kann. Das Datum wird als Anzahl von Sekunden von 1970-01-01T0:0:0Z UTC bis zum Gültigkeitszeitpunkt des Tokens dargestellt. |
| Ressource | Der App-ID-URI des empfangenden Webdiensts. |
Beispiel für antwort
Das folgende Beispiel zeigt eine Erfolgsantwort auf eine Anforderung für ein Zugriffstoken für einen Webdienst.
{
"access_token":"eyJ0eXAiO ... 0X2tnSQLEANnSPHY0gKcgw",
"token_type":"Bearer",
"expires_in":"3599",
"expires_on":"1388452167",
"resource":"https://service.contoso.com/"
}
Verwenden des Zugriffstokens für den Zugriff auf die gesicherte Ressource
Der Dienst kann das erworbene Zugriffstoken verwenden, um authentifizierte Anforderungen an die downstream-Web-API durchzuführen, indem das Token im Authorization Header festgelegt wird.
Beispiel
GET /me?api-version=2013-11-08 HTTP/1.1
Host: graph.microsoft.com
Authorization: Bearer eyJ0eXAiO ... 0X2tnSQLEANnSPHY0gKcgw