Delen via


Service-tot-service-aanroepen met behulp van clientgegevens (gedeeld geheim of certificaat)

Waarschuwing

Deze inhoud is bedoeld voor het oudere Azure AD v1.0-eindpunt. Gebruik het Microsoft Identity Platform voor nieuwe projecten.

De OAuth 2.0-clientreferentiesstroom stelt een webservice (vertrouwelijke client) in staat om zijn eigen referenties te gebruiken zonder zich als een gebruiker voor te doen, voor authenticatie bij het aanroepen van een andere webservice. In dit scenario is de client doorgaans een webservice in de middelste laag, een daemonservice of website. Voor een hoger niveau van zekerheid staat Azure AD de aanroepende service ook toe om een certificaat (in plaats van een gedeeld geheim) als referentie te gebruiken.

Stroomschema voor toekenningsstroom van clientreferenties

In het volgende diagram wordt uitgelegd hoe de stroom voor het verlenen van clientreferenties werkt in Azure Active Directory (Azure AD).

OAuth2.0-clientreferenties Stroom verlenen

  1. De clienttoepassing wordt geverifieerd bij het eindpunt voor de uitgifte van het Azure AD-token en vraagt een toegangstoken aan.
  2. Het uitgifte-eindpunt van het Azure AD-token geeft het toegangstoken uit.
  3. Het toegangstoken wordt gebruikt om te verifiëren bij de beveiligde resource.
  4. Gegevens van de beveiligde resource worden geretourneerd naar de clienttoepassing.

De services registreren in Azure AD

Registreer zowel de aanroepende service als de ontvangende service in Azure Active Directory (Azure AD). Zie Toepassingen integreren met Azure Active Directoryvoor gedetailleerde instructies.

Een toegangstoken aanvragen

Als u een toegangstoken wilt aanvragen, gebruikt u een HTTP POST voor het tenantspecifieke Azure AD-eindpunt.

https://login.microsoftonline.com/<tenant id>/oauth2/token

Service-to-service-toegangstokenaanvraag

Er zijn twee gevallen, afhankelijk van of de clienttoepassing ervoor kiest om te worden beveiligd door een gedeeld geheim of een certificaat.

Eerste geval: Toegangstokenaanvraag met een gedeeld geheim

Wanneer u een gedeeld geheim gebruikt, bevat een service-naar-service-toegangstokenaanvraag de volgende parameters:

Maatstaf Typ Beschrijving
grant_type vereist Hiermee geeft u het aangevraagde toekenningstype. In een Client Credentials Grant-stroom moet de waarde client_credentialszijn.
client-id vereist Hiermee geeft u de Azure AD-client-id van de aanroepende webservice op. Als u de client-id van de aanroepende toepassing wilt vinden, klikt u in de Azure-portalop Azure Active Directory-, klikt u op app-registratiesen klikt u op de toepassing. De client_id is de toepassings-id
klantgeheim vereist Voer een sleutel in die is geregistreerd voor de aanroepende webservice of daemon-toepassing in Azure AD. Als u een sleutel wilt maken, klikt u in Azure Portal op Azure Active Directory-, klikt u op app-registraties, klikt u op de toepassing, klikt u op instellingen, klikt u op sleutelsen voegt u een sleutel toe. URL-codeer dit geheim bij het verstrekken ervan.
hulpbron vereist Voer de app-id-URI van de ontvangende webservice in. Als u de app-id-URI wilt vinden, klikt u in Azure Portal op Azure Active Directory-, klikt u op app-registraties, klikt u op de servicetoepassing en klikt u vervolgens op Instellingen en Eigenschappen.

Voorbeeld

De volgende HTTP POST vraagt om een toegangstoken voor de https://service.contoso.com/-webservice. De client_id identificeert de webservice die het toegangstoken aanvraagt.

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

Tweede geval: Toegangstokenaanvraag met een certificaat

Een service-naar-service-toegangstokenaanvraag met een certificaat bevat de volgende parameters:

Maatstaf Typ Beschrijving
grant_type vereist Om het gevraagde antwoordtype te specificeren. In een Client Credentials Grant flow moet de waarde client_credentialszijn.
client-id vereist Hiermee geeft u de Azure AD-client-id van de aanroepende webservice op. Als u de client-id van de aanroepende toepassing wilt vinden, klikt u in de Azure-portalop Azure Active Directory-, klikt u op app-registratiesen klikt u op de toepassing. De client_id is de toepassings-id
client_assertion_type vereist De waarde moet urn:ietf:params:oauth:client-assertion-type:jwt-bearer zijn.
client_assertion vereist Een assertie (een JSON-webtoken) die u moet maken en ondertekenen met het certificaat dat u hebt geregistreerd als referenties voor uw toepassing. Lees meer over certificaatreferenties voor meer informatie over het registreren van uw certificaat en de indeling van de assertie.
hulpbron vereist Voer de app-id-URI van de ontvangende webservice in. Als u de app-id-URI wilt vinden, klikt u in Azure Portal op Azure Active Directory-, klikt u op app-registraties, klikt u op de servicetoepassing en klikt u vervolgens op Instellingen en Eigenschappen.

U ziet dat de parameters bijna hetzelfde zijn als in het geval van de aanvraag door een gedeeld geheim, behalve dat de parameter client_secret wordt vervangen door twee parameters: een client_assertion_type en client_assertion.

Voorbeeld

De volgende HTTP POST vraagt een toegangstoken aan voor de https://service.contoso.com/-webservice met een certificaat. De client_id identificeert de webservice die het toegangstoken aanvraagt.

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

Antwoord op Dienst-naar-dienst Toegangstoken

Een geslaagd antwoord bevat een JSON OAuth 2.0-antwoord met de volgende parameters:

Maatstaf Beschrijving
toegangstoken Het aangevraagde toegangstoken. De aanroepende webservice kan dit token gebruiken om te verifiëren bij de ontvangende webservice.
token_type Geeft de waarde van het tokentype aan. Het enige type dat Azure AD ondersteunt, is Bearer-. Zie het OAuth 2.0 Authorization Framework: Bearer Token Usage (RFC 6750)voor meer informatie over bearer-tokens.
expires_in Hoe lang het toegangstoken geldig is, in seconden.
vervalt_op Het tijdstip waarop het toegangstoken verloopt. De datum wordt weergegeven als het aantal seconden van 1970-01-01T0:0:0Z UTC tot de verlooptijd. Deze waarde wordt gebruikt om de levensduur van tokens in de cache te bepalen.
niet_vóór De tijd van waaruit het toegangstoken bruikbaar wordt. De datum wordt weergegeven als het aantal seconden van 1970-01-01T0:0:0Z UTC tot de geldigheidsduur van het token.
hulpbron De app-id-URI van de ontvangende webservice.

Voorbeeld van antwoord

In het volgende voorbeeld ziet u een geslaagde reactie op een aanvraag voor een toegangstoken voor een webservice.

{
"access_token":"eyJ0eXAiO ... 0X2tnSQLEANnSPHY0gKcgw",
"token_type":"Bearer",
"expires_in":"3599",
"expires_on":"1388452167",
"resource":"https://service.contoso.com/"
}

Het toegangstoken gebruiken om toegang te krijgen tot de beveiligde resource

De service kan het verkregen toegangstoken gebruiken om geverifieerde aanvragen naar de downstream-web-API te verzenden door het token in te stellen in de Authorization-header.

Voorbeeld

GET /me?api-version=2013-11-08 HTTP/1.1
Host: graph.microsoft.com
Authorization: Bearer eyJ0eXAiO ... 0X2tnSQLEANnSPHY0gKcgw

Zie ook