Jogkivonatok áttekintése az Azure Active Directory B2C-ben

Az Azure Active Directory B2C (Azure AD B2C) különböző típusú biztonsági jogkivonatokat bocsát ki az egyes hitelesítési folyamatok során. Ez a cikk az egyes tokentípusok formátumát, biztonsági jellemzőit és tartalmát ismerteti.

Jogkivonattípusok

Azure AD B2C támogatja az OAuth 2.0 és az OpenID Connect protokollt, amely jogkivonatokat használ a hitelesítéshez és az erőforrásokhoz való biztonságos hozzáféréshez. Az Azure AD B2C-ben használt összes jogkivonat olyan JSON webes jogkivonat (JWT), amely a tulajdonosra és a jogkivonat tárgyára vonatkozó információkat tartalmaz.

A Azure AD B2C-vel folytatott kommunikáció során a következő jogkivonatok használatosak:

  • Id token – JWT, amely jogcímeket tartalmaz, amelyekkel azonosíthatja a felhasználókat az alkalmazásban. Ezt a jogkivonatot biztonságosan küldi el a rendszer http-kérésekben ugyanazon alkalmazás vagy szolgáltatás két összetevője közötti kommunikációhoz. A jogcímeket az illesztésnek megfelelően használhatja egy azonosító jogkivonatban. Gyakran használják őket fiókadatok megjelenítésére vagy hozzáférés-vezérlési döntések meghozatalára egy alkalmazásban. A Azure AD B2C által kiadott azonosító jogkivonatok aláírtak, de nincsenek titkosítva. Amikor az alkalmazás vagy az API azonosító jogkivonatot kap, ellenőriznie kell az aláírást annak igazolásához, hogy a jogkivonat hiteles. Az alkalmazásnak vagy AZ API-nak is ellenőriznie kell néhány jogcímet a jogkivonatban annak igazolásához, hogy az érvényes. A forgatókönyv követelményeitől függően az alkalmazás által ellenőrzött jogcímek eltérőek lehetnek, de az alkalmazásnak minden forgatókönyvben végre kell hajtania néhány gyakori jogcím-ellenőrzést.

  • Hozzáférési jogkivonat – Olyan jogcímeket tartalmazó JWT, amellyel azonosíthatja az API-khoz megadott engedélyeket. A hozzáférési jogkivonatok aláírtak, de nincsenek titkosítva. A hozzáférési jogkivonatok az API-khoz és az erőforrás-kiszolgálókhoz való hozzáférés biztosítására szolgálnak. Amikor az API hozzáférési jogkivonatot kap, ellenőriznie kell az aláírást annak igazolásához, hogy a jogkivonat hiteles. Az API-nak néhány jogcímet is ellenőriznie kell a jogkivonatban, hogy igazolja az érvényességét. A forgatókönyv követelményeitől függően az alkalmazás által ellenőrzött jogcímek eltérőek lehetnek, de az alkalmazásnak minden forgatókönyvben végre kell hajtania néhány gyakori jogcím-ellenőrzést.

  • Frissítési jogkivonat – A frissítési jogkivonatok új azonosító jogkivonatok beszerzésére és hozzáférési jogkivonatok beszerzésére szolgálnak egy OAuth 2.0-folyamatban. Hosszú távú hozzáférést biztosítanak az alkalmazásnak az erőforrásokhoz a felhasználók nevében anélkül, hogy interakcióra van szükség ezekkel a felhasználókkal. A frissítési jogkivonatok átlátszatlanok az alkalmazás számára. Ezeket Azure AD B2C bocsátja ki, és csak Azure AD B2C vizsgálja meg és értelmezi. Ezek hosszú élettartamúak, de az alkalmazást nem szabad azzal a várakozással írni, hogy egy frissítési jogkivonat egy adott ideig fog tartani. A frissítési jogkivonatok különböző okokból bármikor érvényteleníthetők. Az alkalmazás csak úgy tudhatja meg, hogy a frissítési jogkivonat érvényes-e, ha megkísérli beváltani egy jogkivonat kérésével Azure AD B2C-nek. Amikor bevált egy frissítési jogkivonatot egy új jogkivonatra, egy új frissítési jogkivonatot kap a jogkivonat válaszában. Mentse az új frissítési jogkivonatot. Lecseréli a kérésben korábban használt frissítési jogkivonatot. Ez a művelet garantálja, hogy a frissítési jogkivonatok a lehető leghosszabb ideig érvényesek maradnak. A PKCE engedélyezési kódfolyamatot használó egyoldalas alkalmazások frissítési jogkivonatának élettartama mindig 24 óra. További információ a frissítési jogkivonatok biztonsági vonatkozásairól a böngészőben.

Végpontok

A regisztrált alkalmazások jogkivonatokat kapnak, és a következő végpontokra küldött kérésekkel kommunikálnak Azure AD B2C-vel:

  • https://<tenant-name>.b2clogin.com/<tenant-name>.onmicrosoft.com/<policy-name>/oauth2/v2.0/authorize
  • https://<tenant-name>.b2clogin.com/<tenant-name>.onmicrosoft.com/<policy-name>/oauth2/v2.0/token

Az alkalmazás által Azure AD B2C-től kapott biztonsági jogkivonatok a vagy /token végpontokról /authorize származhatnak. Ha az azonosító jogkivonatokat a következőből szerzi be:

  • /authorize végpont, az implicit folyamat használatával történik, amelyet gyakran használnak a JavaScript-alapú webalkalmazásokra bejelentkező felhasználók. Ha azonban az alkalmazás MSAL.js 2.0-s vagy újabb verzióját használja, ne engedélyezze az implicit folyamat megadását az alkalmazásregisztrációban, mivel MSAL.js 2.0+ támogatja a PKCE engedélyezési kódfolyamatát.
  • /token végpont, az engedélyezési kód folyamatával történik, amely elrejti a jogkivonatot a böngésző elől.

Jogcímek

A Azure AD B2C használatakor részletesen szabályozhatja a jogkivonatok tartalmát. A felhasználói folyamatokat és az egyéni szabályzatokat úgy konfigurálhatja, hogy bizonyos felhasználói adatokat küldjenek az alkalmazáshoz szükséges jogcímekben. Ezek a jogcímek olyan szabványos tulajdonságokat tartalmazhatnak, mint a displayName és az emailAddress. Az alkalmazások ezeket a jogcímeket használhatják a felhasználók és kérések biztonságos hitelesítéséhez.

Az azonosító jogkivonatokban szereplő jogcímek nem adott sorrendben jelennek meg. Az új jogcímek bármikor bevezethetők az azonosító jogkivonatokban. Az alkalmazásnak nem szabad megszakadnia az új jogcímek bevezetésekor. Egyéni felhasználói attribútumokat is hozzáadhat a jogcímeihez.

Az alábbi táblázat azokat a jogcímeket sorolja fel, amelyek az Azure AD B2C által kibocsátott azonosító jogkivonatokban és hozzáférési jogkivonatokban várhatók.

Name Jogcím Példaérték Leírás
Célközönség aud 90c0fe63-bcf2-44d5-8fb7-b8bbc0b29dc6 A jogkivonat kívánt címzettjének azonosítása. A Azure AD B2C esetében a célközönség az alkalmazás azonosítója. Az alkalmazásnak ellenőriznie kell ezt az értéket, és el kell utasítania a jogkivonatot, ha az nem egyezik. A célközönség az erőforrás szinonimája.
Kiállító iss https://<tenant-name>.b2clogin.com/775527ff-9a37-4307-8b3d-cc311f58d925/v2.0/ Azonosítja azt a biztonsági jogkivonat-szolgáltatást (STS), amely a jogkivonatot hozza létre és adja vissza. Azt a könyvtárat is azonosítja, amelyben a felhasználó hitelesítése megtörtént. Az alkalmazásnak ellenőriznie kell a kiállítói jogcímet, hogy a jogkivonat a megfelelő végpontról származik-e.
Kiadás dátuma: iat 1438535543 A jogkivonat kiállításának időpontja, amely az alapidőszaki időpontban van megadva.
Lejárati idő exp 1438539443 Az az időpont, amikor a jogkivonat érvénytelenné válik, az alapidőszaki időpontban jelenik meg. Az alkalmazásnak ezt a jogcímet kell használnia a jogkivonat élettartamának ellenőrzéséhez.
Nem korábban nbf 1438535543 Az az időpont, amikor a jogkivonat érvényessé válik, az alapidőszaki időpontban jelenik meg. Ez általában megegyezik a jogkivonat kiadásának időpontjával. Az alkalmazásnak ezt a jogcímet kell használnia a jogkivonat élettartamának ellenőrzéséhez.
Verzió ver 1.0 Az azonosító jogkivonat verziója Azure AD B2C által meghatározott módon.
Kódkivonat c_hash SGCPtt01wxwfgnYZy2VJtQ Az azonosító jogkivonatban szereplő kódkivonat csak akkor szerepel, ha a jogkivonatot OAuth 2.0 engedélyezési kóddal együtt adják ki. A kódkivonat egy engedélyezési kód hitelességének ellenőrzésére használható. Az ellenőrzés végrehajtásával kapcsolatos további információkért lásd az OpenID Connect specifikációját.
Hozzáférési jogkivonat at_hash SGCPtt01wxwfgnYZy2VJtQ A hozzáférési jogkivonat csak akkor szerepel az azonosító jogkivonatban, ha a jogkivonatot OAuth 2.0 hozzáférési jogkivonattal együtt bocsátják ki. A hozzáférési jogkivonatok kivonatával ellenőrizheti a hozzáférési jogkivonatok hitelességét. Az ellenőrzés végrehajtásával kapcsolatos további információkért tekintse meg az OpenID Connect specifikációját
Nemce nonce 12345 A nonce egy olyan stratégia, amely a jogkivonatok visszajátszási támadásait mérsékli. Az alkalmazás a lekérdezési paraméterrel adhat meg nem műveletet egy nonce engedélyezési kérelemben. A kérésben megadott érték csak az nonce azonosító jogkivonat jogcímében lesz meghatározva. Ez a jogcím lehetővé teszi, hogy az alkalmazás ellenőrizze az értéket a kérelemben megadott értékkel. Az alkalmazásnak ezt az ellenőrzést az azonosítótoken érvényesítési folyamata során kell elvégeznie.
Tárgy sub 884408e1-2918-4cz0-b12d-3aa027d7563b Az a rendszerbiztonsági tag, amelyről a jogkivonat adatokat állít be, például egy alkalmazás felhasználója. Ez az érték nem módosítható, és nem rendelhető újra és nem használható fel újra. Az engedélyezési ellenőrzések biztonságos végrehajtására használható, például amikor a jogkivonatot egy erőforrás eléréséhez használják. A tulajdonos jogcím alapértelmezés szerint a címtárban lévő felhasználó objektumazonosítójával van feltöltve.
Hitelesítési környezet osztályának referenciája acr Nem értelmezhető Csak régebbi szabályzatokkal használható.
Megbízhatósági keretrendszer szabályzata tfp b2c_1_signupsignin1 Az azonosító jogkivonat beszerzéséhez használt szabályzat neve.
Hitelesítési idő auth_time 1438535543 Az az időpont, amikor a felhasználó utoljára adta meg a hitelesítő adatokat, az alapidőszaki időpontban jelenik meg. A hitelesítés nem különbözteti meg a friss bejelentkezést, az egyszeri bejelentkezési (SSO) munkamenetet vagy egy másik bejelentkezési típust. Az auth_time az utolsó alkalom, amikor az alkalmazás (vagy felhasználó) hitelesítési kísérletet kezdeményezett Azure AD B2C-n. A hitelesítéshez használt módszer nincs megkülönböztetve.
Hatókör scp Read Az erőforrásnak hozzáférési jogkivonathoz megadott engedélyek. A több megadott engedélyt szóköz választja el egymástól.
Jogosult fél azp 975251ed-e4f5-4efd-abcb-5f1a8f566ab7 A kérést kezdeményező ügyfélalkalmazás alkalmazásazonosítója .

Konfiguráció

Az alábbi tulajdonságok a B2C Azure AD által kibocsátott biztonsági jogkivonatok élettartamának kezelésére szolgálnak:

  • Hozzáférés & Azonosítótokenek élettartama (perc) – A védett erőforrásokhoz való hozzáféréshez használt OAuth 2.0 tulajdonosi jogkivonat élettartama. Az alapértelmezett érték 60 perc. A minimális (a következőket is beleértve) 5 perc. A maximális (befogadó) 1440 perc.

  • Frissítési jogkivonat élettartama (nap) – Az az időszak, amely előtt a frissítési jogkivonatok új hozzáférési vagy azonosító jogkivonatok beszerzésére használhatók. Az időtartam az új frissítési jogkivonat beszerzésére is vonatkozik, ha az alkalmazás megkapta a hatókört offline_access . Az alapértelmezett érték 14 nap. A minimum (a befogadó) egy nap. A maximális (befogadó) 90 nap.

  • Frissítési jogkivonat csúszóablakának élettartama (nap) – Ez az időtartam leteltével a felhasználónak újrahitelesítenie kell az alkalmazást, függetlenül az alkalmazás által legutóbb beszerzett frissítési jogkivonat érvényességi időtartamától. Csak akkor adható meg, ha a kapcsoló Határolókeret értékre van állítva. A frissítési jogkivonat élettartamának (nap) értékénél nagyobbnak vagy egyenlőnek kell lennie. Ha a kapcsoló Nincs lejárat értékre van állítva, nem adhat meg egy adott értéket. Az alapértelmezett érték 90 nap. A minimum (a befogadó) egy nap. A maximális (befogadó) időszak 365 nap.

A következő használati esetek engedélyezve vannak az alábbi tulajdonságok használatával:

  • Lehetővé teszi, hogy a felhasználó határozatlan ideig bejelentkezve maradjon egy mobilalkalmazásba, amíg a felhasználó folyamatosan aktív az alkalmazásban. A Frissítési jogkivonat csúszóablakának élettartamát (nap) a Nincs lejárat értékre állíthatja a bejelentkezési felhasználói folyamatban.
  • A megfelelő hozzáférési jogkivonatok élettartamának beállításával megfelel az iparág biztonsági és megfelelőségi követelményeinek.

Ezek a beállítások nem érhetők el az új jelszó kérésére szolgáló felhasználói folyamatokhoz.

Kompatibilitás

A tokenkompatibilitás kezeléséhez a következő tulajdonságok használhatók:

  • Kiállítói (iss) jogcím – Ez a tulajdonság azonosítja a jogkivonatot kibocsátó Azure AD B2C-bérlőt. Az alapértelmezett érték https://<domain>/{B2C tenant GUID}/v2.0/. A értéke https://<domain>/tfp/{B2C tenant GUID}/{Policy ID}/v2.0/ a B2C-bérlő Azure AD és a jogkivonat-kérelemben használt felhasználói folyamat azonosítóit is tartalmazza. Ha az alkalmazásnak vagy a kódtárnak Azure AD B2C-nek meg kell felelnie az OpenID Connect Discovery 1.0 specifikációnak, használja ezt az értéket.

  • Tulajdonosi (al)jogcím – Ez a tulajdonság azonosítja azt az entitást, amelyhez a jogkivonat adatokat ad meg. Az alapértelmezett érték az ObjectID, amely feltölti a sub jogkivonatban lévő jogcímet a felhasználó objektumazonosítójával. A Nem támogatott érték csak a visszamenőleges kompatibilitás érdekében van megadva. Javasoljuk, hogy amint tudja, váltson az ObjectID azonosítóra.

  • Szabályzatazonosítót jelölő jogcím – Ez a tulajdonság azonosítja azt a jogcímtípust, amelybe a jogkivonat-kérelemben használt szabályzatnév fel van töltve. Az alapértelmezett érték tfp. Az értéke acr csak a visszamenőleges kompatibilitás érdekében van megadva.

Továbbítás

A felhasználói folyamat kezdetekor Azure AD B2C hozzáférési jogkivonatot kap egy identitásszolgáltatótól. Azure AD B2C ezt a jogkivonatot használja a felhasználó adatainak lekéréséhez. Engedélyezi a felhasználói folyamatban, hogy a jogkivonatot a B2C Azure AD regisztrált alkalmazásoknak továbbítsa. Az alkalmazásnak ajánlott felhasználói folyamatot kell használnia, hogy kihasználhassa a jogkivonat jogcímként való átadásának előnyeit.

Azure AD B2C jelenleg csak az OAuth 2.0 identitásszolgáltatók hozzáférési jogkivonatának átadását támogatja, például a Facebookot és a Google-t. Az összes többi identitásszolgáltató esetében a jogcím üres lesz.

Érvényesítés

A jogkivonat érvényesítéséhez az alkalmazásnak ellenőriznie kell a jogkivonat aláírását és jogcímeit is. A JWT-k érvényesítéséhez számos nyílt forráskódú kódtár érhető el az előnyben részesített nyelvtől függően. Javasoljuk, hogy ezeket a lehetőségeket vizsgálja meg ahelyett, hogy saját érvényesítési logikát implementál.

Aláírás ellenőrzése

A JWT három szegmenst, fejlécet, törzset és aláírást tartalmaz. Az aláírási szegmens a jogkivonat hitelességének ellenőrzésére használható, hogy az alkalmazás megbízhatónak minősíthesse azt. Azure AD B2C-jogkivonatok az iparági szabványnak megfelelő aszimmetrikus titkosítási algoritmusok, például az RSA 256 használatával vannak aláírva.

A jogkivonat fejléce a jogkivonat aláírásához használt kulcsra és titkosítási módszerre vonatkozó információkat tartalmazza:

{
        "typ": "JWT",
        "alg": "RS256",
        "kid": "GvnPApfWMdLRi8PDmisFn7bprKg"
}

Az alg-jogcím értéke a jogkivonat aláírásához használt algoritmus. A gyermekjogcím értéke a jogkivonat aláírásához használt nyilvános kulcs. A Azure AD B2C bármikor aláírhat egy jogkivonatot a nyilvános-privát kulcspárok bármelyikének használatával. Azure AD B2C rendszeres időközönként elforgatja a lehetséges kulcskészletet. Az alkalmazást úgy kell megírni, hogy automatikusan kezelje ezeket a kulcsmódosításokat. A Azure AD B2C által használt nyilvános kulcsok frissítéseinek ellenőrzésének ésszerű gyakorisága 24 óránként történik. A váratlan kulcsmódosítások kezeléséhez az alkalmazást meg kell írni, hogy újra lekérje a nyilvános kulcsokat, ha váratlan gyermekértéket kap.

Azure AD B2C rendelkezik OpenID Connect-metaadat-végponttal. Ezzel a végponttal az alkalmazások adatokat kérhetnek Azure AD B2C-ről futásidőben. Ezek az információk végpontokat, jogkivonat-tartalmakat és jogkivonat-aláíró kulcsokat tartalmaznak. A Azure AD B2C-bérlő minden szabályzathoz tartalmaz egy JSON-metaadat-dokumentumot. A metaadat-dokumentum egy JSON-objektum, amely számos hasznos információt tartalmaz. A metaadatok jwks_uri tartalmaznak, amely megadja a jogkivonatok aláírásához használt nyilvános kulcsok halmazának helyét. Ez a hely itt található, de a legjobb, ha dinamikusan lekéri a helyet a metaadat-dokumentum és az elemzési jwks_uri használatával:

https://contoso.b2clogin.com/contoso.onmicrosoft.com/b2c_1_signupsignin1/discovery/v2.0/keys

Az ezen az URL-címen található JSON-dokumentum tartalmazza az adott pillanatban használt összes nyilvános kulcsra vonatkozó információt. Az alkalmazás a kid JWT fejlécben található jogcím használatával kiválaszthatja az adott jogkivonat aláírásához használt JSON-dokumentum nyilvános kulcsát. Ezután a megfelelő nyilvános kulccsal és a jelzett algoritmussal végezhet aláírás-ellenőrzést.

A bérlői szabályzat metaadat-dokumentuma B2C_1_signupsignin1 a contoso.onmicrosoft.com következő helyen található:

https://contoso.b2clogin.com/contoso.onmicrosoft.com/b2c_1_signupsignin1/v2.0/.well-known/openid-configuration

A jogkivonat aláírásához használt szabályzat meghatározásához (és a metaadatok kérésének helyéhez) két lehetősége van. Először is a szabályzat neve szerepel a jogkivonatban az tfp (alapértelmezett) vagy acr jogcímben (a konfigurált módon). A jogcímeket a JWT törzséből a 64-es alapszintű dekódolással és az eredményül adott JSON-sztring deszerializálásával elemezheti. A tfp vagy acr jogcím a jogkivonat kiadásához használt szabályzat neve. A másik lehetőség az, hogy a kérés kiadásakor a state paraméter értékében kódolja a szabályzatot, majd dekódolja annak meghatározásához, hogy melyik szabályzatot használta. Bármelyik metódus érvényes.

Azure AD B2C az RFC 3447 specifikáción alapuló RS256 algoritmust használja. A nyilvános kulcs két összetevőből áll: az RSA modulusból (n) és az RSA nyilvános kitevőből (e). A tokenérvényesítéshez programozott módon konvertálhat n és e értékeket tanúsítványformátummá.

Az aláírás-ellenőrzés végrehajtásának leírása a dokumentum hatókörén kívül esik. Számos nyílt forráskódú kódtár érhető el a jogkivonat érvényesítéséhez.

Jogcímek érvényesítése

Amikor az alkalmazások vagy AZ API azonosítótokent kap, több ellenőrzést is végre kell hajtania az azonosító jogkivonatban lévő jogcímek között. A következő jogcímeket kell ellenőrizni:

  • audience – Ellenőrzi, hogy az azonosító jogkivonatot az alkalmazásnak szánták-e.
  • nem korábbi és lejárati idő – Ellenőrzi, hogy az azonosító jogkivonata nem járt-e le.
  • issuer – Ellenőrzi, hogy a jogkivonatot a B2C Azure AD adta-e ki az alkalmazásnak.
  • nonce – A jogkivonatok visszajátszásának támadáscsökkentési stratégiája.

Az alkalmazás által végrehajtandó ellenőrzések teljes listájáért tekintse meg az OpenID Connect specifikációját.

Következő lépések

További információ a hozzáférési jogkivonatok használatáról.