Tjänst-till-tjänst-anrop med klientautentiseringsuppgifter (delad hemlighet eller certifikat)

Varning

Det här innehållet gäller för den äldre Azure AD v1.0-slutpunkten. Använd Microsofts identitetsplattform för nya projekt.

OAuth 2.0-klientens autentiseringsuppgifter beviljar Flow tillstånd för en webbtjänst (konfidentiell klient) att använda sina egna autentiseringsuppgifter i stället för att personifiera en användare, för att autentisera när du anropar en annan webbtjänst. I det här scenariot är klienten vanligtvis en webbtjänst på mellannivå, en daemontjänst eller en webbplats. För en högre säkerhetsnivå kan Azure AD även tillåta att den anropande tjänsten använder ett certifikat (i stället för en delad hemlighet) som autentiseringsuppgifter.

Flödesdiagram över beviljande av klientautentiseringsuppgifter

I följande diagram förklaras hur flödet för beviljande av klientautentiseringsuppgifter fungerar i Azure Active Directory (Azure AD).

Beviljandeflöde för OAuth2.0-klientautentiseringsuppgifter

  1. Klientprogrammet autentiserar till slutpunkten för Azure AD tokenutfärdning och begär en åtkomsttoken.
  2. Den Azure AD slutpunkten för tokenutfärdning utfärdar åtkomsttoken.
  3. Åtkomsttoken används för att autentisera mot den skyddade resursen.
  4. Data från den skyddade resursen returneras till klientprogrammet.

Registrera tjänsterna i Azure AD

Registrera både den anropande tjänsten och den mottagande tjänsten i Azure Active Directory (Azure AD). Detaljerade anvisningar finns i Integrera program med Azure Active Directory.

Begära en åtkomsttoken

Om du vill begära en åtkomsttoken använder du en HTTP POST till den klientspecifika Azure AD-slutpunkten.

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

Begäran om tjänst-till-tjänst-åtkomsttoken

Det finns två fall beroende på om klientprogrammet väljer att skyddas av en delad hemlighet eller ett certifikat.

Första fallet: Åtkomsttokenbegäran med en delad hemlighet

När du använder en delad hemlighet innehåller en tjänst-till-tjänst-åtkomsttokenbegäran följande parametrar:

Parameter Typ Description
grant_type krävs Anger den begärda beviljandetypen. I ett flöde för beviljande av klientautentiseringsuppgifter måste värdet vara client_credentials.
client_id krävs Anger Azure AD klient-ID för den anropande webbtjänsten. Du hittar det anropande programmets klient-ID genom att i Azure Portal klicka på Azure Active Directory, klicka på Appregistreringar och klicka på programmet. Client_id är program-ID:t
client_secret krävs Ange en nyckel registrerad för den anropande webbtjänsten eller daemonprogrammet i Azure AD. Om du vill skapa en nyckel går du till Azure Portal, klickar på Azure Active Directory, klickar på Appregistreringar, klickar på programmet, klickar på Inställningar, klickar på Nycklar och lägger till en nyckel. URL-koda den här hemligheten när du anger den.
resource krävs Ange app-ID-URI:n för den mottagande webbtjänsten. Du hittar URI:n för app-ID genom att i Azure Portal klicka på Azure Active Directory, klicka på Appregistreringar, klicka på tjänstprogrammet och sedan på Inställningar och egenskaper.

Exempel

Följande HTTP POST begär en åtkomsttoken för https://service.contoso.com/ webbtjänsten. client_id identifierar den webbtjänst som begär åtkomsttoken.

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

Andra fallet: Begäran om åtkomsttoken med ett certifikat

En begäran om tjänst-till-tjänst-åtkomsttoken med ett certifikat innehåller följande parametrar:

Parameter Typ Description
grant_type krävs Anger den begärda svarstypen. I ett flöde för beviljande av klientautentiseringsuppgifter måste värdet vara client_credentials.
client_id krävs Anger Azure AD klient-ID för den anropande webbtjänsten. Du hittar det anropande programmets klient-ID genom att i Azure Portal klicka på Azure Active Directory, klicka på Appregistreringar och klicka på programmet. Client_id är program-ID:t
client_assertion_type krävs Värdet måste vara urn:ietf:params:oauth:client-assertion-type:jwt-bearer
client_assertion krävs En försäkran (en JSON-webbtoken) som du behöver för att skapa och signera med certifikatet som du registrerade som autentiseringsuppgifter för ditt program. Läs om certifikatautentiseringsuppgifter för att lära dig hur du registrerar certifikatet och formatet för försäkran.
resource krävs Ange app-ID-URI:n för den mottagande webbtjänsten. Du hittar URI:n för app-ID genom att i Azure Portal klicka på Azure Active Directory, klicka på Appregistreringar, klicka på tjänstprogrammet och sedan på Inställningar och egenskaper.

Observera att parametrarna är nästan desamma som i fallet med begäran av delad hemlighet, förutom att parametern client_secret ersätts av två parametrar: en client_assertion_type och client_assertion.

Exempel

Följande HTTP POST begär en åtkomsttoken för https://service.contoso.com/ webbtjänsten med ett certifikat. client_id identifierar den webbtjänst som begär åtkomsttoken.

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

Svar från tjänst till tjänst-åtkomsttoken

Ett lyckat svar innehåller ett JSON OAuth 2.0-svar med följande parametrar:

Parameter Beskrivning
access_token Begärd åtkomsttoken. Den anropande webbtjänsten kan använda denna token för att autentisera till den mottagande webbtjänsten.
token_type Anger tokentypvärdet. Den enda typ som Azure AD stöder är Bearer. Mer information om ägartoken finns i OAuth 2.0 Authorization Framework: Bearer Token Usage (RFC 6750).
expires_in Hur länge åtkomsttoken är giltig (i sekunder).
expires_on Den tid då åtkomsttoken upphör att gälla. Datumet representeras som antalet sekunder från 1970-01-01T0:0:0Z UTC fram till förfallotiden. Det här värdet används för att fastställa livslängden för cachelagrade token.
not_before Den tid från vilken åtkomsttoken blir användbar. Datumet representeras som antalet sekunder från 1970-01-01T0:0:0Z UTC till giltighetstiden för token.
resource App-ID-URI för den mottagande webbtjänsten.

Exempel på svar

I följande exempel visas ett lyckat svar på en begäran om en åtkomsttoken till en webbtjänst.

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

Använda åtkomsttoken för att komma åt den skyddade resursen

Tjänsten kan använda den förvärvade åtkomsttoken för att göra autentiserade begäranden till det underordnade webb-API:et Authorization genom att ange token i rubriken.

Exempel

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

Se även