Hozzáférési jogkivonat kérése az Azure Active Directory B2C-ben

A hozzáférési jogkivonat olyan jogcímeket tartalmaz, amelyet az Azure Active Directory B2C-ben (Azure AD B2C) használhat az API-knak megadott engedélyek azonosítására. Erőforrás-kiszolgáló meghívásához a HTTP-kérésnek tartalmaznia kell egy hozzáférési jogkivonatot. A hozzáférési jogkivonatot az access_token sztring jelöli az Azure AD B2C-től kapott válaszban.

Ez a cikk bemutatja, hogyan kérhet hozzáférési jogkivonatot a webalkalmazások és webes API-k számára. Az Azure AD B2C-ben használt jogkivonatokról az Azure Active Directory B2C-ben használt jogkivonatok áttekintését ismertető cikkben talál további információt.

Megjegyzés

A webes API-láncokat (a nevében) nem támogatja Azure AD B2C – Számos architektúra tartalmaz egy webes API-t, amelyet egy másik alsóbb rétegbeli webes API-nak kell meghívnia, mindkettőt Azure AD B2C védi. A forgatókönyv olyan ügyfelekben gyakori, amelyek webes API-háttérrel rendelkeznek, amely egy másik szolgáltatást hív meg. Ez a láncolatba fűzött webes API-megoldás az OAuth 2.0 JWT tulajdonosi hitelesítő adatok megadásával (vagy más néven a meghatalmazásos folyamat segítségével) valósítható meg. A meghatalmazásos folyamatot azonban még nem implementáltuk az Azure AD B2C-ben. Bár az on-behalf-of a Microsoft Entra ID-ben regisztrált alkalmazások esetében működik, nem működik a Azure AD B2C-ben regisztrált alkalmazások esetében, függetlenül attól, hogy a bérlő (Microsoft Entra azonosító vagy Azure AD B2C), amely a jogkivonatokat bocsátja ki.

Előfeltételek

Hatókörök

A hatókörök lehetőséget nyújtanak a védett erőforrásokra vonatkozó engedélyek kezelésére. Hozzáférési jogkivonat kérésekor az ügyfélalkalmazásnak meg kell adni a kívánt engedélyeket a kérés scope paraméterében. Ha például a(z) readhatókörértéket szeretné megadni a(z) https://contoso.onmicrosoft.com/apialkalmazásazonosító URI-vel rendelkező API-ra vonatkozóan, a hatókör https://contoso.onmicrosoft.com/api/read lenne.

A hatóköröket a webes API a hatóköralapú hozzáférés-vezérlés megvalósításához használja. A webes API-k bizonyos felhasználói például rendelkezhetnek olvasási és írási hozzáféréssel is, míg mások csak olvasási hozzáféréssel. Ha több engedélyt szeretne beszerezni ugyanabban a kérésben, hozzáadhat több bejegyzést is a kérés scope paraméteréhez, szóközzel elválasztva.

Az alábbi példában URL-címben dekódolt hatókörök láthatók:

scope=https://contoso.onmicrosoft.com/api/read openid offline_access

Az alábbi példában URL-címben dekódolt hatókörök láthatók:

scope=https%3A%2F%2Fcontoso.onmicrosoft.com%2Fapi%2Fread%20openid%20offline_access

Ha az ügyfélalkalmazásnak megadottnál több hatókört kér, a hívás akkor lesz sikeres, ha legalább egy engedély megadása megtörténik. Az eredményül kapott hozzáférési jogkivonatban található scp jogcímhez csak a sikeresen megadott engedélyeket adja hozzá a rendszer.

OpenID Connect-hatókörök

Az OpenID Connect szabvány több speciális hatókörértéket megad. Az alábbi hatókörök a felhasználó profiljának elérését lehető tévő engedélyt jelölik:

  • openid – Azonosító jogkivonatot kér.
  • offline_access – Frissítési jogkivonatot kér hitelesítésikód-folyamatokkal.
  • 00000000-0000-0000-0000-00000000000 – Az ügyfélazonosító használata a hatókörben azt jelzi, hogy az alkalmazásnak szüksége van egy hozzáférési jogkivonatra, amely a saját szolgáltatása vagy webes API-ja ellen használható, ugyanazzal az ügyfél-azonosítóval.

Ha egy /authorize kérésben található response_type paraméterben az token szerepel, a hatókör paraméternek tartalmaznia kell legalább egy olyan erőforrás-hatókört, amely meg lesz adva, és amely nem az openid vagy az offline_access. Az /authorize kérés ellenkező esetben meghiúsul.

Jogkivonat kérése

Hozzáférési jogkivonat kéréséhez engedélyezési kódra van szüksége. Az alábbi példa egy engedélyezési kód végpontjára irányuló kérésre /authorize mutat be példát:

GET https://<tenant-name>.b2clogin.com/<tenant-name>.onmicrosoft.com/<policy-name>/oauth2/v2.0/authorize?
client_id=<application-ID>
&nonce=anyRandomValue
&redirect_uri=https://jwt.ms
&scope=<application-ID-URI>/<scope-name>
&response_type=code

Cserélje le a lekérdezési sztring értékeit az alábbiak szerint:

  • <tenant-name>- A Azure AD B2C-bérlő neve. Ha egyéni tartományt használ, cserélje le a elemet tenant-name.b2clogin.com a saját tartományára, például contoso.com: .
  • <policy-name> – Az egyéni szabályzatának vagy felhasználói folyamatának neve.
  • <application-ID> – A felhasználói folyamat támogatása érdekében regisztrált webalkalmazás alkalmazásazonosítója.
  • <application-ID-URI> – Az ügyfélalkalmazás API-paneljének közzététele területen beállított alkalmazásazonosító URI.
  • <scope-name> – Az ügyfélalkalmazás API-paneljének közzététele területen hozzáadott hatókör neve.
  • <redirect-uri> – Az ügyfélalkalmazás regisztrálásakor megadott átirányítási URI.

A kérés működésének megismeréséhez illessze be a kérést a böngészőbe, és futtassa.

Ez a folyamat interaktív része, ahol lépéseket hajthat végre. A rendszer felkéri, hogy fejezze be a felhasználói folyamat munkafolyamatát. Ehhez be kell írnia a felhasználónevét és a jelszavát egy bejelentkezési űrlapon vagy bármilyen más lépésben. A végrehajtott lépések a felhasználói folyamat definiálásától függenek.

Az engedélyezési kódot tartalmazó válasznak a következő példához hasonlónak kell lennie:

https://jwt.ms/?code=eyJraWQiOiJjcGltY29yZV8wOTI1MjAxNSIsInZlciI6IjEuMC...

Miután sikeresen megkapta az engedélyezési kódot, a használatával hozzáférési jogkivonatot kérhet. A paraméterek a HTTP POST-kérelem törzsében találhatók:

POST <tenant-name>.b2clogin.com/<tenant-name>.onmicrosoft.com/<policy-name>/oauth2/v2.0/token HTTP/1.1
Host: <tenant-name>.b2clogin.com
Content-Type: application/x-www-form-urlencoded

grant_type=authorization_code
&client_id=<application-ID>
&scope=<application-ID-URI>/<scope-name>
&code=eyJraWQiOiJjcGltY29yZV8wOTI1MjAxNSIsInZlciI6IjEuMC...
&redirect_uri=https://jwt.ms
&client_secret=2hMG2-_:y12n10vwH...

Ha tesztelni szeretné ezt a POST HTTP-kérést, bármilyen HTTP-ügyfelet használhat, például a Microsoft PowerShellt vagy a Postmant.

A sikeres jogkivonat-válasz a következőképpen néz ki:

{
    "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6Ilg1ZVhrN...",
    "token_type": "Bearer",
    "not_before": 1549647431,
    "expires_in": 3600,
    "expires_on": 1549651031,
    "resource": "f2a76e08-93f2-4350-833c-965c02483b11",
    "profile_info": "eyJ2ZXIiOiIxLjAiLCJ0aWQiOiJjNjRhNGY3ZC0zMDkxLTRjNzMtYTcyMi1hM2YwNjk0Z..."
}

Amikor a visszaadott hozzáférési jogkivonatot vizsgálja a https://jwt.ms használatával, az alábbi példához hasonló eredménynek kell megjelennie:

{
  "typ": "JWT",
  "alg": "RS256",
  "kid": "X5eXk4xyojNFum1kl2Ytv8dl..."
}.{
  "iss": "https://contoso0926tenant.b2clogin.com/c64a4f7d-3091-4c73-a7.../v2.0/",
  "exp": 1549651031,
  "nbf": 1549647431,
  "aud": "f2a76e08-93f2-4350-833c-965...",
  "oid": "1558f87f-452b-4757-bcd1-883...",
  "sub": "1558f87f-452b-4757-bcd1-883...",
  "name": "David",
  "tfp": "B2C_1_signupsignin1",
  "nonce": "anyRandomValue",
  "scp": "read",
  "azp": "38307aee-303c-4fff-8087-d8d2...",
  "ver": "1.0",
  "iat": 1549647431
}.[Signature]

Következő lépések