Volání mezi službami pomocí přihlašovacích údajů klienta (sdílený tajný klíč nebo certifikát)
Upozornění
Tento obsah je určený pro starší koncový bod Azure AD verze 1.0. Pro nové projekty použijte Microsoft identity platform.
Tok udělení přihlašovacích údajů klienta OAuth 2.0 umožňuje webové službě (důvěrnému klientovi) použít vlastní přihlašovací údaje místo zosobnění uživatele k ověření při volání jiné webové služby. V tomto scénáři je klient obvykle webová služba střední vrstvy, služba démon nebo web. Pro vyšší úroveň záruky Azure AD také umožňuje volající službě používat certifikát (místo sdíleného tajného klíče) jako přihlašovací údaje.
Diagram toku udělení přihlašovacích údajů klienta
Následující diagram vysvětluje, jak funguje tok udělení přihlašovacích údajů klienta v Azure Active Directory (Azure AD).
- Klientská aplikace se ověří ve koncovém bodu vystavování tokenu Azure AD a vyžádá si přístupový token.
- Koncový bod vystavování tokenu Azure AD vydá přístupový token.
- Přístupový token se používá k ověření v zabezpečeném prostředku.
- Data ze zabezpečeného prostředku se vrátí do klientské aplikace.
Registrace služeb v Azure AD
Zaregistrujte volající i přijímající službu v Azure Active Directory (Azure AD). Podrobné pokyny najdete v tématu Integrace aplikací s Azure Active Directory.
Žádost o přístupový token
Pokud chcete požádat o přístupový token, použijte ke koncovému bodu Azure AD specifickému pro tenanta protokol HTTP POST.
https://login.microsoftonline.com/<tenant id>/oauth2/token
Žádost o přístupový token služby-služba
Existují dva případy v závislosti na tom, jestli se klientská aplikace rozhodne zabezpečit sdíleným tajným kódem nebo certifikátem.
První případ: Žádost o přístupový token se sdíleným tajným kódem
Při použití sdíleného tajného kódu obsahuje žádost o přístup k tokenu service-to-service následující parametry:
Parametr | Typ | Description |
---|---|---|
grant_type | vyžadováno | Určuje požadovaný typ udělení. V toku udělení přihlašovacích údajů klienta musí být hodnota client_credentials. |
client_id | vyžadováno | Určuje ID klienta Azure AD volající webové služby. Pokud chcete najít ID klienta volající aplikace, klikněte v Azure Portal na Azure Active Directory, klikněte na Registrace aplikací a klikněte na aplikaci. client_id je ID aplikace. |
client_secret | vyžadováno | Zadejte klíč zaregistrovaný pro volající webovou službu nebo aplikaci démona v Azure AD. Klíč vytvoříte tak, že v Azure Portal kliknete na Azure Active Directory, kliknete na Registrace aplikací, kliknete na aplikaci, kliknete na Nastavení, kliknete na Klíče a přidáte klíč. Adresa URL kóduje tento tajný kód při jeho poskytování. |
prostředek | vyžadováno | Zadejte identifikátor URI ID aplikace přijímající webové služby. Identifikátor URI ID aplikace najdete tak, že v Azure Portal kliknete na Azure Active Directory, kliknete na Registrace aplikací, kliknete na aplikaci služby a pak kliknete na Nastavení a vlastnosti. |
Příklad
Následující protokol HTTP POST vyžaduje přístupový token pro webovou https://service.contoso.com/
službu. Identifikuje client_id
webovou službu, která požaduje přístupový token.
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
Druhý případ: Žádost o přístupový token s certifikátem
Žádost o přístup k tokenu service-to-service s certifikátem obsahuje následující parametry:
Parametr | Typ | Description |
---|---|---|
grant_type | vyžadováno | Určuje požadovaný typ odpovědi. V toku udělení přihlašovacích údajů klienta musí být hodnota client_credentials. |
client_id | vyžadováno | Určuje ID klienta Azure AD volající webové služby. Pokud chcete najít ID klienta volající aplikace, klikněte v Azure Portal na Azure Active Directory, klikněte na Registrace aplikací a klikněte na aplikaci. client_id je ID aplikace. |
client_assertion_type | vyžadováno | Hodnota musí být urn:ietf:params:oauth:client-assertion-type:jwt-bearer |
client_assertion | vyžadováno | Kontrolní výraz (webový token JSON), který potřebujete vytvořit a podepsat certifikátem, který jste zaregistrovali jako přihlašovací údaje pro aplikaci. Přečtěte si informace o přihlašovacích údaji certifikátu a zjistěte, jak zaregistrovat certifikát a formát kontrolního výrazu. |
prostředek | vyžadováno | Zadejte identifikátor URI ID aplikace přijímající webové služby. Identifikátor URI ID aplikace najdete tak, že v Azure Portal kliknete na Azure Active Directory, kliknete na Registrace aplikací, kliknete na aplikaci služby a pak kliknete na Nastavení a vlastnosti. |
Všimněte si, že parametry jsou téměř stejné jako v případě požadavku sdíleným tajným kódem s tím rozdílem, že parametr client_secret je nahrazen dvěma parametry: client_assertion_type a client_assertion.
Příklad
Následující protokol HTTP POST vyžaduje přístupový token pro https://service.contoso.com/
webovou službu s certifikátem. Identifikuje client_id
webovou službu, která požaduje přístupový token.
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
Odpověď přístupového tokenu service-to-service
Úspěšná odpověď obsahuje odpověď JSON OAuth 2.0 s následujícími parametry:
Parametr | Popis |
---|---|
access_token | Požadovaný přístupový token. Volající webová služba může tento token použít k ověření pro přijímající webovou službu. |
token_type | Označuje hodnotu typu tokenu. Jediný typ, který Azure AD podporuje, je Bearer. Další informace o nosných tokenech najdete v tématu Autorizační rozhraní OAuth 2.0: Použití nosných tokenů (RFC 6750). |
expires_in | Jak dlouho je přístupový token platný (v sekundách). |
expires_on | Čas vypršení platnosti přístupového tokenu. Datum je reprezentováno jako počet sekund od 1970-01-01T0:0:0Z UTC do doby vypršení platnosti. Tato hodnota se používá k určení životnosti tokenů uložených v mezipaměti. |
not_before | Čas, od kterého se přístupový token stane použitelným. Datum je reprezentováno jako počet sekund od 1970-01-01T0:0:0Z UTC do doby platnosti tokenu. |
prostředek | Identifikátor URI ID aplikace přijímající webové služby |
Příklad odpovědi
Následující příklad ukazuje úspěšnou odpověď na žádost o přístupový token pro webovou službu.
{
"access_token":"eyJ0eXAiO ... 0X2tnSQLEANnSPHY0gKcgw",
"token_type":"Bearer",
"expires_in":"3599",
"expires_on":"1388452167",
"resource":"https://service.contoso.com/"
}
Přístup k zabezpečenému prostředku pomocí přístupového tokenu
Služba může získaný přístupový token použít k provádění ověřených požadavků na podřízené webové rozhraní API nastavením tokenu v hlavičce Authorization
.
Příklad
GET /me?api-version=2013-11-08 HTTP/1.1
Host: graph.microsoft.com
Authorization: Bearer eyJ0eXAiO ... 0X2tnSQLEANnSPHY0gKcgw