Freigeben über


Dienst für Dienstaufrufe mithilfe von Clientanmeldeinformationen (freigegebener geheimer Schlüssel oder Zertifikat)

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.

OAuth2.0-Client-Anmeldedaten-Prozess

  1. Die Clientanwendung authentifiziert sich beim Azure AD-Tokenausstellungsendpunkt und fordert ein Zugriffstoken an.
  2. Der Azure AD-Tokenausstellungsendpunkt gibt das Zugriffstoken aus.
  3. Das Zugriffstoken wird verwendet, um sich bei der gesicherten Ressource zu authentifizieren.
  4. 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

Siehe auch