Udostępnij za pośrednictwem


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).

Przepływ udzielania poświadczeń klienta OAuth2.0

  1. Aplikacja kliencka uwierzytelnia się w punkcie końcowym wystawiania tokenu Azure AD i żąda tokenu dostępu.
  2. Punkt końcowy wystawiania tokenu Azure AD wystawiania tokenu dostępu jest wystawiany.
  3. Token dostępu służy do uwierzytelniania w zabezpieczonym zasobie.
  4. 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

Zobacz także