Wywołania service to service przy użyciu poświadczeń klienta (wspólny klucz tajny lub certyfikat)
Ostrzeżenie
Ta zawartość dotyczy starszego punktu końcowego Azure AD w wersji 1.0. Użyj Platforma tożsamości Microsoft dla nowych projektów.
Przepływ udzielania poświadczeń klienta protokołu OAuth 2.0 umożliwia usłudze sieci Web (poufnemu klientowi) używanie własnych poświadczeń zamiast personifikacji użytkownika w celu uwierzytelnienia podczas wywoływania innej usługi internetowej. W tym scenariuszu klient jest zazwyczaj usługą internetową warstwy środkowej, usługą demona lub witryną internetową. Aby zapewnić wyższy poziom gwarancji, Azure AD również umożliwia usłudze wywołującej użycie certyfikatu (zamiast wspólnego wpisu tajnego) jako poświadczenia.
Diagram przepływu udzielania poświadczeń klienta
Na poniższym diagramie wyjaśniono, jak działa przepływ udzielania poświadczeń klienta w usłudze Azure Active Directory (Azure AD).
- Aplikacja kliencka uwierzytelnia się w punkcie końcowym wystawiania tokenu Azure AD i żąda tokenu dostępu.
- Punkt końcowy wystawiania tokenu Azure AD wystawiania tokenu dostępu jest wystawiany.
- Token dostępu służy do uwierzytelniania w zabezpieczonym zasobie.
- Dane z zabezpieczonego zasobu są zwracane do aplikacji klienckiej.
Rejestrowanie usług w usłudze Azure AD
Zarejestruj zarówno usługę wywołującą, jak i usługę odbierania w usłudze Azure Active Directory (Azure AD). Aby uzyskać szczegółowe instrukcje, zobacz Integrowanie aplikacji z usługą Azure Active Directory.
Żądanie tokenu dostępu
Aby zażądać tokenu dostępu, użyj żądania HTTP POST do punktu końcowego Azure AD specyficznego dla dzierżawy.
https://login.microsoftonline.com/<tenant id>/oauth2/token
Żądanie tokenu dostępu typu usługa-usługa
Istnieją dwa przypadki, w zależności od tego, czy aplikacja kliencka decyduje się na zabezpieczenie za pomocą wspólnego wpisu tajnego, czy certyfikatu.
Pierwszy przypadek: Żądanie tokenu dostępu z udostępnionym wpisem tajnym
W przypadku korzystania z udostępnionego wpisu tajnego żądanie tokenu dostępu typu usługa-usługa zawiera następujące parametry:
Parametr | Typ | Opis |
---|---|---|
grant_type | wymagane | Określa żądany typ udzielenia. W przepływie udzielanie poświadczeń klienta wartość musi być client_credentials. |
client_id | wymagane | Określa Azure AD identyfikator klienta wywołującej usługi sieci Web. Aby znaleźć identyfikator klienta aplikacji wywołującej, w Azure Portal kliknij pozycję Azure Active Directory, kliknij pozycję Rejestracje aplikacji, kliknij aplikację. Client_id jest identyfikatorem aplikacji |
client_secret | wymagane | Wprowadź klucz zarejestrowany dla wywołującej usługi internetowej lub aplikacji demona w Azure AD. Aby utworzyć klucz, w Azure Portal kliknij pozycję Azure Active Directory, kliknij pozycję Rejestracje aplikacji, kliknij aplikację, kliknij pozycję Ustawienia, kliknij pozycję Klucze i dodaj klucz. Kodowanie adresu URL tego wpisu tajnego podczas jego podawania. |
zasób | wymagane | Wprowadź identyfikator URI identyfikatora aplikacji odbieranej usługi internetowej. Aby znaleźć identyfikator URI identyfikatora aplikacji, w Azure Portal kliknij pozycję Azure Active Directory, kliknij pozycję Rejestracje aplikacji, kliknij aplikację usługi, a następnie kliknij pozycję Ustawienia i właściwości. |
Przykład
Następujący kod HTTP POST żąda tokenu dostępu dla https://service.contoso.com/
usługi internetowej. Element client_id
identyfikuje usługę internetową, która żąda tokenu dostępu.
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
Drugi przypadek: Żądanie tokenu dostępu z certyfikatem
Żądanie tokenu dostępu typu usługa-usługa z certyfikatem zawiera następujące parametry:
Parametr | Typ | Opis |
---|---|---|
grant_type | wymagane | Określa żądany typ odpowiedzi. W przepływie udzielanie poświadczeń klienta wartość musi być client_credentials. |
client_id | wymagane | Określa Azure AD identyfikator klienta wywołującej usługi sieci Web. Aby znaleźć identyfikator klienta aplikacji wywołującej, w Azure Portal kliknij pozycję Azure Active Directory, kliknij pozycję Rejestracje aplikacji, kliknij aplikację. Client_id jest identyfikatorem aplikacji |
client_assertion_type | wymagane | Wartość musi być urn:ietf:params:oauth:client-assertion-type:jwt-bearer |
client_assertion | wymagane | Potwierdzenie (token internetowy JSON), który należy utworzyć i podpisać przy użyciu certyfikatu zarejestrowanego jako poświadczenia aplikacji. Przeczytaj o poświadczeniach certyfikatu , aby dowiedzieć się, jak zarejestrować certyfikat i format potwierdzenia. |
zasób | wymagane | Wprowadź identyfikator URI identyfikatora aplikacji odbieranej usługi internetowej. Aby znaleźć identyfikator URI identyfikatora aplikacji, w Azure Portal kliknij pozycję Azure Active Directory, kliknij pozycję Rejestracje aplikacji, kliknij aplikację usługi, a następnie kliknij pozycję Ustawienia i właściwości. |
Zwróć uwagę, że parametry są prawie takie same jak w przypadku żądania przez wspólny klucz tajny, z tą różnicą, że parametr client_secret jest zastępowany przez dwa parametry: client_assertion_type i client_assertion.
Przykład
Następujący kod HTTP POST żąda tokenu dostępu dla https://service.contoso.com/
usługi internetowej z certyfikatem. Element client_id
identyfikuje usługę internetową, która żąda tokenu dostępu.
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
Odpowiedź tokenu dostępu typu usługa-usługa
Odpowiedź z informacją o powodzeniu zawiera odpowiedź JSON OAuth 2.0 z następującymi parametrami:
Parametr | Opis |
---|---|
access_token | Żądany token dostępu. Wywołująca usługa sieci Web może używać tego tokenu do uwierzytelniania w odbierającej usłudze sieci Web. |
token_type | Wskazuje wartość typu tokenu. Jedynym typem, który obsługuje Azure AD jest Bearer. Aby uzyskać więcej informacji na temat tokenów elementu nośnego, zobacz OAuth 2.0 Authorization Framework: Bearer Token Usage (RFC 6750). |
expires_in | Jak długo token dostępu jest prawidłowy (w sekundach). |
expires_on | Czas wygaśnięcia tokenu dostępu. Data jest reprezentowana jako liczba sekund od 1970-01-01T0:0:0Z UTC do czasu wygaśnięcia. Ta wartość służy do określania okresu istnienia buforowanych tokenów. |
not_before | Czas, od którego token dostępu staje się użyteczny. Data jest reprezentowana jako liczba sekund od 1970-01-01T0:0:0Z UTC do czasu ważności tokenu. |
zasób | Identyfikator URI identyfikatora aplikacji odbieranej usługi internetowej. |
Przykład odpowiedzi
Poniższy przykład przedstawia odpowiedź powodzenia na żądanie tokenu dostępu do usługi internetowej.
{
"access_token":"eyJ0eXAiO ... 0X2tnSQLEANnSPHY0gKcgw",
"token_type":"Bearer",
"expires_in":"3599",
"expires_on":"1388452167",
"resource":"https://service.contoso.com/"
}
Uzyskiwanie dostępu do zabezpieczonego zasobu przy użyciu tokenu dostępu
Usługa może użyć uzyskanego tokenu dostępu, aby wysyłać uwierzytelnione żądania do podrzędnego internetowego interfejsu API, ustawiając token w nagłówku Authorization
.
Przykład
GET /me?api-version=2013-11-08 HTTP/1.1
Host: graph.microsoft.com
Authorization: Bearer eyJ0eXAiO ... 0X2tnSQLEANnSPHY0gKcgw