Číst v angličtině

Sdílet prostřednictvím


Volání mezi službami, která používají delegovanou uživatelskou identitu ve flow On-Behalf-Of.

Upozornění

Tento obsah je určený pro starší koncový bod Azure AD verze 1.0. Pro nové projekty použijte platformu Microsoft Identity Platform.

Tok OAuth 2.0 on-Behalf-Of (OBO) umožňuje aplikaci, která volá službu nebo webové rozhraní API, předávat ověřování uživatelů jiné službě nebo webovému rozhraní API. Tok OBO šíří delegovanou identitu uživatele a oprávnění prostřednictvím řetězu požadavků. Aby služba střední vrstvy měla provádět ověřené požadavky na podřízenou službu, musí za uživatele zabezpečit přístupový token z Azure Active Directory (Azure AD).

Důležité

Od května 2018 nelze id_token použít pro tok On-Behalf-Of. Jednostráňové aplikace (SPA) musí předat přístupový token důvěrnému klientovi střední vrstvy, aby bylo možné provádět toky OBO. Další podrobnosti o klientech, kteří můžou provádětBehalf-Of volání, najdete v tématu Omezení.

Diagram tokuBehalf-Of

Tok OBO se spustí po ověření uživatele v aplikaci, která používá tok udělení autorizačního kódu OAuth 2.0. V tomto okamžiku aplikace odešle přístupový token (token A) do webového rozhraní API střední vrstvy (API A) obsahující deklarace identity uživatele a vyjádření souhlasu s přístupem k rozhraní API A. V dalším kroku rozhraní API A provede ověřený požadavek na podřízené webové rozhraní API (API B).

Tento postup představuje tok On-Behalf-Of: Ukazuje kroky v toku OAuth2.0 On-Behalf-Of

  1. Klientská aplikace odešle požadavek na rozhraní API A s tokenem A.
  2. Rozhraní API A se ověřuje v koncovém bodu vystavení tokenu Azure AD a požádá o token pro přístup k rozhraní API B.
  3. Koncový bod vystavení tokenu Azure AD ověřuje přihlašovací údaje rozhraní API A pomocí tokenu A a vydává přístupový token pro rozhraní API B (token B).
  4. Požadavek na rozhraní API B obsahuje token B v autorizační hlavičce.
  5. Rozhraní API B vrací data z chráněného zdroje.

Poznámka

Deklarace cílové skupiny v přístupovém tokenu použitém k vyžádání tokenu pro podřízenou službu musí být ID služby, která požadavek OBO provádí. Token musí být také podepsaný globálním podpisovým klíčem Azure Active Directory (což je výchozí nastavení pro aplikace zaregistrované prostřednictvím registrací aplikací na portálu).

Registrace aplikace a služby v Azure AD

Zaregistrujte službu střední vrstvy i klientskou aplikaci v Azure AD.

Registrace služby střední vrstvy

  1. Přihlaste se do Azure Portalu.
  2. Na horním panelu vyberte svůj účet a prohlédněte si seznam adresářů a vyberte tenanta služby Active Directory pro vaši aplikaci.
  3. V levém podokně vyberte Další služby a zvolte Azure Active Directory.
  4. Vyberte Registrace aplikací a pak Novou registraci.
  5. Zadejte popisný název aplikace a vyberte typ aplikace.
  6. V části Podporované typy účtů vyberte Účty v libovolném adresáři organizace a osobních účtech Microsoft.
  7. Nastavte identifikátor URI přesměrování na základní adresu URL.
  8. Výběrem možnosti Registrovat aplikaci vytvořte.
  9. Na webu Azure Portal zvolte aplikaci a vyberte Certifikáty a tajné kódy.
  10. Vyberte Nový tajný klíč klienta a přidejte tajný klíč s dobou trvání jednoho roku nebo dvou let.
  11. Při uložení této stránky se na webu Azure Portal zobrazí hodnota tajného kódu. Zkopírujte a uložte hodnotu tajného kódu do bezpečného umístění.
  12. Na stránce Zveřejnit rozhraní API pro vaši aplikaci vytvořte obor vaší aplikace a klikněte na Přidat obor. Portál může vyžadovat, abyste také vytvořili identifikátor URI ID aplikace.

Důležité

K konfiguraci nastavení aplikace v implementaci potřebujete tajný klíč. Tato hodnota tajného kódu se znovu nezobrazí a není možné ji načíst žádným jiným způsobem. Nahrajte ho, jakmile bude vidět na webu Azure Portal.

Zaregistrujte klientskou aplikaci

  1. Přihlaste se do Azure Portalu.
  2. Na horním panelu vyberte svůj účet a prohlédněte si seznam adresářů a vyberte tenanta služby Active Directory pro vaši aplikaci.
  3. V levém podokně vyberte Další služby a zvolte Azure Active Directory.
  4. Vyberte Registrace aplikací a pak Novou registraci.
  5. Zadejte popisný název aplikace a vyberte typ aplikace.
  6. V části Podporované typy účtů vyberte Účty v libovolném adresáři organizace a osobních účtech Microsoft.
  7. Nastavte identifikátor URI přesměrování na základní adresu URL.
  8. Výběrem možnosti Registrovat aplikaci vytvořte.
  9. Nakonfigurujte oprávnění pro vaši aplikaci. V části Oprávnění rozhraní API vyberte Přidat oprávnění a pak Moje rozhraní API.
  10. Do textového pole zadejte název služby střední vrstvy.
  11. Zvolte Vybrat oprávnění a pak vyberte obor, který jste vytvořili v posledním kroku registrace střední vrstvy.

Konfigurace známých klientských aplikací

V tomto scénáři potřebuje služba střední vrstvy získat souhlas uživatele s přístupem k podřízenému rozhraní API bez zásahu uživatele. Možnost udělení přístupu k podřízenému rozhraní API musí být uvedena předem jako součást kroku souhlasu během ověřování.

Pomocí následujícího postupu explicitně svážete registraci klientské aplikace v Azure AD s registrací služby střední vrstvy. Tato operace sloučí souhlas vyžadovaný klientem i střední vrstvou do jednoho dialogového okna.

  1. Přejděte do registrace služby střední vrstvy a výběrem manifestu otevřete editor manifestu.
  2. knownClientApplications Vyhledejte vlastnost pole a přidejte ID klienta klientské aplikace jako prvek.
  3. Uložte manifest výběrem možnosti Uložit.

Žádost o přístupový token mezi službami

Pokud chcete požádat o přístupový token, nastavte http POST do koncového bodu Azure AD specifického pro tenanta s následujícími parametry:

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

Klientská aplikace je zabezpečená buď 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 požadavek na přístupový token služby obsahuje následující parametry:

Parameter Typ Popis
typ_grantu povinné Typ požadavku na token. Požadavek OBO používá webový token JSON (JWT), takže hodnota musí být urn:ietf:params:oauth:grant-type:jwt-bearer.
tvrzení povinné Hodnota přístupového tokenu použitého v požadavku.
client_id (identifikátor klienta) povinné ID aplikace přiřazené volající službě během registrace v Azure AD. Pokud chcete najít ID aplikace na webu Azure Portal, vyberte Active Directory, zvolte adresář a pak vyberte název aplikace.
tajný klíč klienta povinné Klíč zaregistrovaný pro volající službu v Azure AD. Tato hodnota by měla být zaznamenána v době registrace.
zdroj povinné Identifikátor URI ID aplikace přijímající služby (zabezpečený prostředek). Pokud chcete najít identifikátor URI ID aplikace na webu Azure Portal, vyberte Active Directory a zvolte adresář. Vyberte název aplikace, zvolte Všechna nastavení a pak vyberte Vlastnosti.
požadované_použití_tokenu povinné Určuje způsob zpracování požadavku. V tokuBehalf-Of, v režimu Zapnuto, musí být hodnota on_behalf_of.
rozsah povinné Seznam oborů oddělených mezerami pro požadavek tokenu. Pro OpenID Connect je nutné zadat openid oboru.

Příklad

Následující http POST požaduje přístupový token pro https://graph.microsoft.com webové rozhraní API. Identifikuje client_id službu, která požaduje přístupový token.

// line breaks for legibility only

POST /oauth2/token HTTP/1.1
Host: login.microsoftonline.com
Content-Type: application/x-www-form-urlencoded

grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Ajwt-bearer
&client_id=625391af-c675-43e5-8e44-edd3e30ceb15
&client_secret=0Y1W%2BY3yYb3d9N8vSjvm8WrGzVZaAaHbHHcGbcgG%2BoI%3D
&resource=https%3A%2F%2Fgraph.microsoft.com
&assertion=eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6InowMzl6ZHNGdWl6cEJmQlZLMVRuMjVRSFlPMCIsImtpZCI6InowMzl6ZHNGdWl6cEJmQlZLMVRuMjVRSFlPMCJ9.ewogICJhdWQiOiAiaHR0cHM6Ly9ncmFwaC5taWNyb3NvZnQuY29tIiwKICAiaXNzIjogImh0dHBzOi8vc3RzLndpbmRvd3MubmV0LzI2MDM5Y2NlLTQ4OWQtNDAwMi04MjkzLTViMGM1MTM0ZWFjYi8iLAogICJpYXQiOiAxNDkzNDIzMTY4LAogICJuYmYiOiAxNDkzNDIzMTY4LAogICJleHAiOiAxNDkzNDY2OTUxLAogICJhY3IiOiAiMSIsCiAgImFpbyI6ICJBU1FBMi84REFBQUE1NnZGVmp0WlNjNWdBVWwrY1Z0VFpyM0VvV2NvZEoveWV1S2ZqcTZRdC9NPSIsCiAgImFtciI6IFsKICAgICJwd2QiCiAgXSwKICAiYXBwaWQiOiAiNjI1MzkxYWYtYzY3NS00M2U1LThlNDQtZWRkM2UzMGNlYjE1IiwKICAiYXBwaWRhY3IiOiAiMSIsCiAgImVfZXhwIjogMzAyNjgzLAogICJmYW1pbHlfbmFtZSI6ICJUZXN0IiwKICAiZ2l2ZW5fbmFtZSI6ICJOYXZ5YSIsCiAgImlwYWRkciI6ICIxNjcuMjIwLjEuMTc3IiwKICAibmFtZSI6ICJOYXZ5YSBUZXN0IiwKICAib2lkIjogIjFjZDRiY2FjLWI4MDgtNDIzYS05ZTJmLTgyN2ZiYjFiYjczOSIsCiAgInBsYXRmIjogIjMiLAogICJwdWlkIjogIjEwMDMzRkZGQTEyRUQ3RkUiLAogICJzY3AiOiAiVXNlci5SZWFkIiwKICAic3ViIjogIjNKTUlaSWJlYTc1R2hfWHdDN2ZzX0JDc3kxa1l1ekZKLTUyVm1Zd0JuM3ciLAogICJ0aWQiOiAiMjYwMzljY2UtNDg5ZC00MDAyLTgyOTMtNWIwYzUxMzRlYWNiIiwKICAidW5pcXVlX25hbWUiOiAibmF2eWFAZGRvYmFsaWFub3V0bG9vay5vbm1pY3Jvc29mdC5jb20iLAogICJ1cG4iOiAibmF2eWFAZGRvYmFsaWFub3V0bG9vay5vbm1pY3Jvc29mdC5jb20iLAogICJ1dGkiOiAieEN3ZnpoYS1QMFdKUU9MeENHZ0tBQSIsCiAgInZlciI6ICIxLjAiCn0.cqmUVjfVbqWsxJLUI1Z4FRx1mNQAHP-L0F4EMN09r8FY9bIKeO-0q1eTdP11Nkj_k4BmtaZsTcK_mUygdMqEp9AfyVyA1HYvokcgGCW_Z6DMlVGqlIU4ssEkL9abgl1REHElPhpwBFFBBenOk9iHddD1GddTn6vJbKC3qAaNM5VarjSPu50bVvCrqKNvFixTb5bbdnSz-Qr6n6ACiEimiI1aNOPR2DeKUyWBPaQcU5EAK0ef5IsVJC1yaYDlAcUYIILMDLCD9ebjsy0t9pj_7lvjzUSrbMdSCCdzCqez_MSNxrk1Nu9AecugkBYp3UVUZOIyythVrj6-sVvLZKUutQ
&requested_token_use=on_behalf_of
&scope=openid

Druhý případ: Žádost o přístupový token s certifikátem

Žádost o přístupový token service-to-service s certifikátem obsahuje následující parametry:

Parameter Typ Popis
typ_grantu povinné Typ požadavku na token. Požadavek OBO používá přístupový token JWT, takže hodnota musí být urn:ietf:params:oauth:grant-type:jwt-bearer.
tvrzení povinné Hodnota tokenu použitého v požadavku.
client_id (identifikátor klienta) povinné ID aplikace přiřazené volající službě během registrace v Azure AD. Pokud chcete najít ID aplikace na webu Azure Portal, vyberte Active Directory, zvolte adresář a pak vyberte název aplikace.
typ_klientského_ověření povinné Hodnota musí být urn:ietf:params:oauth:client-assertion-type:jwt-bearer
klientské prohlášení povinné Webový token JSON, který vytvoříte a podepíšete certifikátem, který jste zaregistrovali jako přihlašovací údaje pro vaši aplikaci. Podívejte se na údaje o certifikátu, abyste se dozvěděli o formátu asertace a o tom, jak registrovat svůj certifikát.
zdroj povinné Identifikátor URI ID aplikace přijímající služby (zabezpečený prostředek). Pokud chcete najít identifikátor URI ID aplikace na webu Azure Portal, vyberte Active Directory a zvolte adresář. Vyberte název aplikace, zvolte Všechna nastavení a pak vyberte Vlastnosti.
požadované_použití_tokenu povinné Určuje způsob zpracování požadavku. VBehalf-Of toku Zapnuto musí být hodnota on_behalf_of.
rozsah povinné Seznam oborů oddělených mezerami pro požadavek tokenu. Pro OpenID Connect je nutné zadat rozsah openid.

Tyto parametry jsou téměř stejné jako u požadavku sdíleným tajným kódem s tím rozdílem, že je client_secret parameter nahrazen dvěma parametry: client_assertion_type a client_assertion.

Příklad

Následující http POST požádá o přístupový token pro https://graph.microsoft.com webové rozhraní API s certifikátem. Identifikuje client_id službu, která požaduje přístupový token.

// line breaks for legibility only

POST /oauth2/token HTTP/1.1
Host: login.microsoftonline.com
Content-Type: application/x-www-form-urlencoded

grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Ajwt-bearer
&client_id=625391af-c675-43e5-8e44-edd3e30ceb15
&client_assertion_type=urn%3Aietf%3Aparams%3Aoauth%3Aclient-assertion-type%3Ajwt-bearer
&client_assertion=eyJhbGciOiJSUzI1NiIsIng1dCI6Imd4OHRHeXN5amNScUtqRlBuZDdSRnd2d1pJMCJ9.eyJ{a lot of characters here}M8U3bSUKKJDEg
&resource=https%3A%2F%2Fgraph.microsoft.com
&assertion=eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6InowMzl6ZHNGdWl6cEJmQlZLMVRuMjVRSFlPMCIsImtpZCI6InowMzl6ZHNGdWl6cEJmQlZLMVRuMjVRSFlPMCJ9.eyJhdWQiOiJodHRwczovL2Rkb2JhbGlhbm91dGxvb2sub25taWNyb3NvZnQuY29tLzE5MjNmODYyLWU2ZGMtNDFhMy04MWRhLTgwMmJhZTAwYWY2ZCIsImlzcyI6Imh0dHBzOi8vc3RzLndpbmRvd3MubmV0LzI2MDM5Y2NlLTQ4OWQtNDAwMi04MjkzLTViMGM1MTM0ZWFjYi8iLCJpYXQiOjE0OTM0MjMxNTIsIm5iZiI6MTQ5MzQyMzE1MiwiZXhwIjoxNDkzNDY2NjUyLCJhY3IiOiIxIiwiYWlvIjoiWTJaZ1lCRFF2aTlVZEc0LzM0L3dpQndqbjhYeVp4YmR1TFhmVE1QeG8yYlN2elgreHBVQSIsImFtciI6WyJwd2QiXSwiYXBwaWQiOiJiMzE1MDA3OS03YmViLTQxN2YtYTA2YS0zZmRjNzhjMzI1NDUiLCJhcHBpZGFjciI6IjAiLCJlX2V4cCI6MzAyNDAwLCJmYW1pbHlfbmFtZSI6IlRlc3QiLCJnaXZlbl9uYW1lIjoiTmF2eWEiLCJpcGFkZHIiOiIxNjcuMjIwLjEuMTc3IiwibmFtZSI6Ik5hdnlhIFRlc3QiLCJvaWQiOiIxY2Q0YmNhYy1iODA4LTQyM2EtOWUyZi04MjdmYmIxYmI3MzkiLCJwbGF0ZiI6IjMiLCJzY3AiOiJ1c2VyX2ltcGVyc29uYXRpb24iLCJzdWIiOiJEVXpYbkdKMDJIUk0zRW5pbDFxdjZCakxTNUllQy0tQ2ZpbzRxS1MzNEc4IiwidGlkIjoiMjYwMzljY2UtNDg5ZC00MDAyLTgyOTMtNWIwYzUxMzRlYWNiIiwidW5pcXVlX25hbWUiOiJuYXZ5YUBkZG9iYWxpYW5vdXRsb29rLm9ubWljcm9zb2Z0LmNvbSIsInVwbiI6Im5hdnlhQGRkb2JhbGlhbm91dGxvb2sub25taWNyb3NvZnQuY29tIiwidmVyIjoiMS4wIn0.R-Ke-XO7lK0r5uLwxB8g5CrcPAwRln5SccJCfEjU6IUqpqcjWcDzeDdNOySiVPDU_ZU5knJmzRCF8fcjFtPsaA4R7vdIEbDuOur15FXSvE8FvVSjP_49OH6hBYqoSUAslN3FMfbO6Z8YfCIY4tSOB2I6ahQ_x4ZWFWglC3w5mK-_4iX81bqi95eV4RUKefUuHhQDXtWhrSgIEC0YiluMvA4TnaJdLq_tWXIc4_Tq_KfpkvI004ONKgU7EAMEr1wZ4aDcJV2yf22gQ1sCSig6EGSTmmzDuEPsYiyd4NhidRZJP4HiiQh-hePBQsgcSgYGvz9wC6n57ufYKh2wm_Ti3Q
&requested_token_use=on_behalf_of
&scope=openid

Odpověď přístupového tokenu service-to-service

Úspěšná odpověď je odpověď JSON OAuth 2.0 s následujícími parametry:

Parameter Popis
typ_tokenu Označuje hodnotu typu tokenu. Jediným typem, který Azure AD podporuje, je Bearer. Další informace o nosných tokenech najdete v autorizačním rozhraní OAuth 2.0: Použití nosných tokenů (RFC 6750).
rozsah Rozsah přístupu udělený v tokenu.
vyprší za Doba platnosti přístupového tokenu (v sekundách).
vyprší dne Č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.
zdroj Identifikátor URI ID aplikace přijímající služby (zabezpečený prostředek).
access_token (přístupový token) Požadovaný přístupový token. Volající služba může tento token použít k ověření v přijímající službě.
identifikační token Požadovaný token ID. Volající služba může tento token použít k ověření identity uživatele a zahájení relace s uživatelem.
aktualizační_token Obnovovací token požadovaného přístupového tokenu. Volající služba může tento token použít k vyžádání dalšího přístupového tokenu po vypršení platnosti aktuálního přístupového tokenu.

Příklad úspěšné odpovědi

Následující příklad ukazuje úspěšnou odpověď na žádost o přístupový token pro webové API https://graph.microsoft.com.

{
    "token_type":"Bearer",
    "scope":"User.Read",
    "expires_in":"43482",
    "ext_expires_in":"302683",
    "expires_on":"1493466951",
    "not_before":"1493423168",
    "resource":"https://graph.microsoft.com",
    "access_token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6InowMzl6ZHNGdWl6cEJmQlZLMVRuMjVRSFlPMCIsImtpZCI6InowMzl6ZHNGdWl6cEJmQlZLMVRuMjVRSFlPMCJ9.eyJhdWQiOiJodHRwczovL2dyYXBoLndpbmRvd3MubmV0IiwiaXNzIjoiaHR0cHM6Ly9zdHMud2luZG93cy5uZXQvMjYwMzljY2UtNDg5ZC00MDAyLTgyOTMtNWIwYzUxMzRlYWNiLyIsImlhdCI6MTQ5MzQyMzE2OCwibmJmIjoxNDkzNDIzMTY4LCJleHAiOjE0OTM0NjY5NTEsImFjciI6IjEiLCJhaW8iOiJBU1FBMi84REFBQUE1NnZGVmp0WlNjNWdBVWwrY1Z0VFpyM0VvV2NvZEoveWV1S2ZqcTZRdC9NPSIsImFtciI6WyJwd2QiXSwiYXBwaWQiOiI2MjUzOTFhZi1jNjc1LTQzZTUtOGU0NC1lZGQzZTMwY2ViMTUiLCJhcHBpZGFjciI6IjEiLCJlX2V4cCI6MzAyNjgzLCJmYW1pbHlfbmFtZSI6IlRlc3QiLCJnaXZlbl9uYW1lIjoiTmF2eWEiLCJpcGFkZHIiOiIxNjcuMjIwLjEuMTc3IiwibmFtZSI6Ik5hdnlhIFRlc3QiLCJvaWQiOiIxY2Q0YmNhYy1iODA4LTQyM2EtOWUyZi04MjdmYmIxYmI3MzkiLCJwbGF0ZiI6IjMiLCJwdWlkIjoiMTAwMzNGRkZBMTJFRDdGRSIsInNjcCI6IlVzZXIuUmVhZCIsInN1YiI6IjNKTUlaSWJlYTc1R2hfWHdDN2ZzX0JDc3kxa1l1ekZKLTUyVm1Zd0JuM3ciLCJ0aWQiOiIyNjAzOWNjZS00ODlkLTQwMDItODI5My01YjBjNTEzNGVhY2IiLCJ1bmlxdWVfbmFtZSI6Im5hdnlhQGRkb2JhbGlhbm91dGxvb2sub25taWNyb3NvZnQuY29tIiwidXBuIjoibmF2eWFAZGRvYmFsaWFub3V0bG9vay5vbm1pY3Jvc29mdC5jb20iLCJ1dGkiOiJ4Q3dmemhhLVAwV0pRT0x4Q0dnS0FBIiwidmVyIjoiMS4wIn0.cqmUVjfVbqWsxJLUI1Z4FRx1mNQAHP-L0F4EMN09r8FY9bIKeO-0q1eTdP11Nkj_k4BmtaZsTcK_mUygdMqEp9AfyVyA1HYvokcgGCW_Z6DMlVGqlIU4ssEkL9abgl1REHElPhpwBFFBBenOk9iHddD1GddTn6vJbKC3qAaNM5VarjSPu50bVvCrqKNvFixTb5bbdnSz-Qr6n6ACiEimiI1aNOPR2DeKUyWBPaQcU5EAK0ef5IsVJC1yaYDlAcUYIILMDLCD9ebjsy0t9pj_7lvjzUSrbMdSCCdzCqez_MSNxrk1Nu9AecugkBYp3UVUZOIyythVrj6-sVvLZKUutQ",
    "refresh_token":"AQABAAAAAABnfiG-mA6NTae7CdWW7QfdjKGu9-t1scy_TDEmLi4eLQMjJGt_nAoVu6A4oSu1KsRiz8XyQIPKQxSGfbf2FoSK-hm2K8TYzbJuswYusQpJaHUQnSqEvdaCeFuqXHBv84wjFhuanzF9dQZB_Ng5za9xKlUENrNtlq9XuLNVKzxEyeUM7JyxzdY7JiEphWImwgOYf6II316d0Z6-H3oYsFezf4Xsjz-MOBYEov0P64UaB5nJMvDyApV-NWpgklLASfNoSPGb67Bc02aFRZrm4kLk-xTl6eKE6hSo0XU2z2t70stFJDxvNQobnvNHrAmBaHWPAcC3FGwFnBOojpZB2tzG1gLEbmdROVDp8kHEYAwnRK947Py12fJNKExUdN0njmXrKxNZ_fEM33LHW1Tf4kMX_GvNmbWHtBnIyG0w5emb-b54ef5AwV5_tGUeivTCCysgucEc-S7G8Cz0xNJ_BOiM_4bAv9iFmrm9STkltpz0-Tftg8WKmaJiC0xXj6uTf4ZkX79mJJIuuM7XP4ARIcLpkktyg2Iym9jcZqymRkGH2Rm9sxBwC4eeZXM7M5a7TJ-5CqOdfuE3sBPq40RdEWMFLcrAzFvP0VDR8NKHIrPR1AcUruat9DETmTNJukdlJN3O41nWdZOVoJM-uKN3uz2wQ2Ld1z0Mb9_6YfMox9KTJNzRzcL52r4V_y3kB6ekaOZ9wQ3HxGBQ4zFt-2U0mSszIAA",
    "id_token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJub25lIn0.eyJhdWQiOiI2MjUzOTFhZi1jNjc1LTQzZTUtOGU0NC1lZGQzZTMwY2ViMTUiLCJpc3MiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC8yNjAzOWNjZS00ODlkLTQwMDItODI5My01YjBjNTEzNGVhY2IvIiwiaWF0IjoxNDkzNDIzMTY4LCJuYmYiOjE0OTM0MjMxNjgsImV4cCI6MTQ5MzQ2Njk1MSwiYW1yIjpbInB3ZCJdLCJmYW1pbHlfbmFtZSI6IlRlc3QiLCJnaXZlbl9uYW1lIjoiTmF2eWEiLCJpcGFkZHIiOiIxNjcuMjIwLjEuMTc3IiwibmFtZSI6Ik5hdnlhIFRlc3QiLCJvaWQiOiIxY2Q0YmNhYy1iODA4LTQyM2EtOWUyZi04MjdmYmIxYmI3MzkiLCJwbGF0ZiI6IjMiLCJzdWIiOiJEVXpYbkdKMDJIUk0zRW5pbDFxdjZCakxTNUllQy0tQ2ZpbzRxS1MzNEc4IiwidGlkIjoiMjYwMzljY2UtNDg5ZC00MDAyLTgyOTMtNWIwYzUxMzRlYWNiIiwidW5pcXVlX25hbWUiOiJuYXZ5YUBkZG9iYWxpYW5vdXRsb29rLm9ubWljcm9zb2Z0LmNvbSIsInVwbiI6Im5hdnlhQGRkb2JhbGlhbm91dGxvb2sub25taWNyb3NvZnQuY29tIiwidXRpIjoieEN3ZnpoYS1QMFdKUU9MeENHZ0tBQSIsInZlciI6IjEuMCJ9."
}

Příklad odpovědi na chybu

Koncový bod tokenu Azure AD vrátí chybovou odpověď, když se pokusí získat přístupový token pro podřízené rozhraní API nastavené pomocí zásad podmíněného přístupu (například vícefaktorové ověřování). Služba střední vrstvy by měla tuto chybu zobrazit klientské aplikaci, aby klientská aplikace mohla poskytnout interakci uživatele, aby splňovala zásady podmíněného přístupu.

{
    "error":"interaction_required",
    "error_description":"AADSTS50079: Due to a configuration change made by your administrator, or because you moved to a new location, you must enroll in multi-factor authentication to access 'bf8d80f9-9098-4972-b203-500f535113b1'.\r\nTrace ID: b72a68c3-0926-4b8e-bc35-3150069c2800\r\nCorrelation ID: 73d656cf-54b1-4eb2-b429-26d8165a52d7\r\nTimestamp: 2017-05-01 22:43:20Z",
    "error_codes":[50079],
    "timestamp":"2017-05-01 22:43:20Z",
    "trace_id":"b72a68c3-0926-4b8e-bc35-3150069c2800",
    "correlation_id":"73d656cf-54b1-4eb2-b429-26d8165a52d7",
    "claims":"{\"access_token\":{\"polids\":{\"essential\":true,\"values\":[\"9ab03e19-ed42-4168-b6b7-7001fb3e933a\"]}}}"
}

Použití přístupového tokenu pro přístup k zabezpečenému prostředku

Služba střední vrstvy může pomocí získaného přístupového tokenu provádět ověřené požadavky na podřízené webové rozhraní API nastavením tokenu Authorization v hlavičce.

Příklad

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

SAML tvrzení získaná v rámci toku OAuth2.0 OBO

Některé webové služby založené na OAuth potřebují přístup k jiným rozhraním API webových služeb, která přijímají kontrolní výrazy SAML v neinteraktivních tocích. Azure Active Directory může poskytnout kontrolní výraz SAML v reakci na tok on-Behalf-Of, který jako cílový prostředek používá webovou službu založenou na SAML.

Poznámka

Toto je nestandardní rozšíření toku OAuth 2.0 on-Behalf-Of, které umožňuje aplikaci založené na OAuth2 přistupovat ke koncovým bodům rozhraní API webové služby, které využívají tokeny SAML.

Tip

Když voláte webovou službu chráněnou SAML z front-endové webové aplikace, můžete jednoduše volat rozhraní API a zahájit běžný interaktivní proces ověření s existující relací uživatele. Tok OBO je potřeba použít jenom v případě, že volání mezi službami vyžaduje token SAML k poskytnutí kontextu uživatele.

Získání tokenu SAML pomocí požadavku OBO se sdíleným tajným kódem

Požadavek mezi službami pro SAML assertion obsahuje následující parametry:

Parameter Typ Popis
typ_grantu povinné Typ požadavku na token. U požadavku, který používá JWT, musí být hodnota urn:ietf:params:oauth:grant-type:jwt-bearer.
tvrzení povinné Hodnota přístupového tokenu použitého v požadavku.
client_id (identifikátor klienta) povinné ID aplikace přiřazené volající službě během registrace v Azure AD. Pokud chcete najít ID aplikace na webu Azure Portal, vyberte Active Directory, zvolte adresář a pak vyberte název aplikace.
tajný klíč klienta povinné Klíč zaregistrovaný pro volající službu v Azure AD. Tato hodnota by měla být zaznamenána v době registrace.
zdroj povinné Identifikátor URI ID aplikace přijímající služby (zabezpečený prostředek). Jedná se o prostředek, který bude cílovou skupinou tokenu SAML. Pokud chcete najít identifikátor URI ID aplikace na webu Azure Portal, vyberte Active Directory a zvolte adresář. Vyberte název aplikace, zvolte Všechna nastavení a pak vyberte Vlastnosti.
požadované_použití_tokenu povinné Určuje způsob zpracování požadavku. V toku On-Behalf-Of musí být hodnota on_behalf_of.
požadovaný_typ_tokenu povinné Určuje typ požadovaného tokenu. Hodnota může být urn:ietf:params:oauth:token-type:saml2 nebo urn:ietf:params:oauth:token-type:saml1 v závislosti na požadavcích přístupového prostředku.

Odpověď obsahuje token SAML kódovaný v kódování UTF8 a Base64url.

  • SubjectConfirmationData pro kontrolní výraz SAML zdrojový z volání OBO: Pokud cílová aplikace vyžaduje hodnotu příjemce v SubjectConfirmationData, pak hodnota musí být adresa URL odpovědi bez zástupných znaků v konfiguraci aplikace prostředků.

  • Uzel SubjectConfirmationData: Uzel nemůže obsahovat atribut InResponseTo , protože není součástí odpovědi SAML. Aplikace, která přijímá token SAML, musí být schopná přijmout kontrolní výraz SAML bez atributu InResponseTo .

  • Souhlas: Souhlas: Souhlas musí být udělen k přijetí tokenu SAML obsahujícího uživatelská data v toku OAuth. Informace o oprávněních a získání souhlasu správce najdete v tématu Oprávnění a souhlas v koncovém bodu Azure Active Directory verze 1.0.

Odpověď s tvrzením SAML

Parameter Popis
typ_tokenu Označuje hodnotu typu tokenu. Jediným typem, který Azure AD podporuje, je Bearer. Další informace o přístupových tokenech viz OAuth 2.0 Authorization Framework: Použití přístupových tokenů (RFC 6750).
rozsah Rozsah přístupu udělený v tokenu.
vyprší za Doba platnosti přístupového tokenu (v sekundách).
vyprší dne Č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.
zdroj Identifikátor URI ID aplikace přijímající služby (zabezpečený prostředek).
access_token (přístupový token) Parametr, který vrací kontrolní výraz SAML.
aktualizační_token Obnovovací token. Volající služba může tento token použít k vyžádání dalšího přístupového tokenu po vypršení platnosti aktuálního kontrolního výrazu SAML.
  • token_type: Nosný
  • platnost_vyprší_za: 3296
  • ext_doba_vypršení: 0
  • expires_on: 1529627844
  • zdroj: https://api.contoso.com
  • access_token: <SAML prohlášení>
  • typ_vydaného_tokenu: urn:ietf:params:oauth:token-type:saml2
  • refresh_token: <Obnovovací token>

Omezení klienta

Veřejní klienti s adresami URL pro odpovědi se zástupnými znaky nemůžou použít id_token pro toky OBO. Důvěrný klient ale může stále uplatnit přístupové tokeny získané prostřednictvím implicitního toku udělení i v případě, že veřejný klient má zaregistrovaný identifikátor URI přesměrování se zástupným znakem.

Další kroky

Přečtěte si další informace o protokolu OAuth 2.0 a dalším způsobem, jak provádět ověřování mezi službami, které používá přihlašovací údaje klienta: