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).
- Klientprogrammet autentiserar till slutpunkten för Azure AD tokenutfärdning och begär en åtkomsttoken.
- Den Azure AD slutpunkten för tokenutfärdning utfärdar åtkomsttoken.
- Åtkomsttoken används för att autentisera mot den skyddade resursen.
- 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