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).
- De clienttoepassing wordt geverifieerd bij het eindpunt voor de uitgifte van het Azure AD-token en vraagt een toegangstoken aan.
- Het uitgifte-eindpunt van het Azure AD-token geeft het toegangstoken uit.
- Het toegangstoken wordt gebruikt om te verifiëren bij de beveiligde resource.
- 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