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).

Tok udělení přihlašovacích údajů klienta OAuth2.0

  1. Klientská aplikace se ověří ve koncovém bodu vystavování tokenu Azure AD a vyžádá si přístupový token.
  2. Koncový bod vystavování tokenu Azure AD vydá přístupový token.
  3. Přístupový token se používá k ověření v zabezpečeném prostředku.
  4. 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

Viz také