Poznámka
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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í.
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:
- Klientská aplikace odešle požadavek na rozhraní API A s tokenem A.
- 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.
- 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).
- Požadavek na rozhraní API B obsahuje token B v autorizační hlavičce.
- 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).
Zaregistrujte službu střední vrstvy i klientskou aplikaci v Azure AD.
- Přihlaste se do Azure Portalu.
- 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.
- V levém podokně vyberte Další služby a zvolte Azure Active Directory.
- Vyberte Registrace aplikací a pak Novou registraci.
- Zadejte popisný název aplikace a vyberte typ aplikace.
- V části Podporované typy účtů vyberte Účty v libovolném adresáři organizace a osobních účtech Microsoft.
- Nastavte identifikátor URI přesměrování na základní adresu URL.
- Výběrem možnosti Registrovat aplikaci vytvořte.
- Na webu Azure Portal zvolte aplikaci a vyberte Certifikáty a tajné kódy.
- Vyberte Nový tajný klíč klienta a přidejte tajný klíč s dobou trvání jednoho roku nebo dvou let.
- 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í.
- 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.
- Přihlaste se do Azure Portalu.
- 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.
- V levém podokně vyberte Další služby a zvolte Azure Active Directory.
- Vyberte Registrace aplikací a pak Novou registraci.
- Zadejte popisný název aplikace a vyberte typ aplikace.
- V části Podporované typy účtů vyberte Účty v libovolném adresáři organizace a osobních účtech Microsoft.
- Nastavte identifikátor URI přesměrování na základní adresu URL.
- Výběrem možnosti Registrovat aplikaci vytvořte.
- 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.
- Do textového pole zadejte název služby střední vrstvy.
- Zvolte Vybrat oprávnění a pak vyberte obor, který jste vytvořili v posledním kroku registrace střední vrstvy.
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.
- Přejděte do registrace služby střední vrstvy a výběrem manifestu otevřete editor manifestu.
-
knownClientApplications
Vyhledejte vlastnost pole a přidejte ID klienta klientské aplikace jako prvek. - Uložte manifest výběrem možnosti Uložit.
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.
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. |
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
Žá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
.
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
Ú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. |
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."
}
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\"]}}}"
}
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.
GET /me?api-version=2013-11-08 HTTP/1.1
Host: graph.microsoft.com
Authorization: Bearer eyJ0eXAiO ... 0X2tnSQLEANnSPHY0gKcgw
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.
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.
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>
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.
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: