Azonosító jogkivonat-tipp technikai profiljának definiálása egyéni Azure Active Directory B2C-szabályzatban
Az Azure AD B2C lehetővé teszi a függő entitásalkalmazások számára, hogy az OAuth2 engedélyezési kérelem részeként bejövő JWT-t küldjenek. A JWT-jogkivonatot kibocsáthatja egy függő entitásalkalmazás vagy egy identitásszolgáltató, és továbbíthat egy tippet a felhasználóról vagy az engedélyezési kérelemről. Az Azure AD B2C ellenőrzi az aláírást, a kiállító nevét és a jogkivonat célközönségét, és kinyeri a jogcímet a bejövő jogkivonatból.
Használati esetek
Ezzel a megoldással adatokat küldhet egyetlen JWT-jogkivonatba ágyazott Azure AD B2C-be. A Signup with email invitation
megoldás, ahol a rendszergazda aláírt meghívást küldhet a felhasználóknak, id_token_hint alapul. Csak a meghívó e-mailhez hozzáféréssel rendelkező felhasználók hozhatják létre a fiókot a címtárban.
Jogkivonat-aláírási módszer
A id_token_hint a jogkivonat kiállítója (függő entitásalkalmazás vagy identitásszolgáltató) összeállítja a jogkivonatot, majd aláírási kulccsal igazolja, hogy a jogkivonat megbízható forrásból származik. Az aláíró kulcs lehet szimmetrikus vagy aszimmetrikus. A szimmetrikus titkosítás vagy a titkos kulcs titkosítása közös titkos kóddal írja alá és érvényesíti az aláírást. Az aszimmetrikus titkosítás vagy nyilvános kulcsú titkosítás olyan titkosítási rendszer, amely titkos kulcsot és nyilvános kulcsot is használ. A titkos kulcs csak a jogkivonat kiállítója számára ismert, és a jogkivonat aláírására szolgál. A nyilvános kulcs meg van osztva az Azure AD B2C-szabályzattal a jogkivonat aláírásának ellenőrzéséhez.
Jogkivonat formátuma
A id_token_hint érvényes JWT-jogkivonatnak kell lennie. Az alábbi táblázat a kötelező jogcímeket sorolja fel. További jogcímek megadása nem kötelező.
Name | Jogcím | Példaérték | Leírás |
---|---|---|---|
Célközönség | aud |
a489fc44-3cc0-4a78-92f6-e413cd853eae |
A jogkivonat kívánt címzettjének azonosítása. A célközönség egy tetszőleges sztring, amelyet a tokenkibocsátó határoz meg. Az Azure AD B2C ellenőrzi ezt az értéket, és elutasítja a jogkivonatot, ha az nem egyezik. |
Issuer | iss |
https://localhost |
Azonosítja a biztonsági jogkivonat-szolgáltatást (tokenkibocsátó). A kiállító egy tetszőleges URI, amelyet a tokenkibocsátó határoz meg. Az Azure AD B2C ellenőrzi ezt az értéket, és elutasítja a jogkivonatot, ha az nem egyezik. |
Lejárati idő | exp |
1600087315 |
Az az időpont, amikor a jogkivonat érvénytelenné válik, az időszaki időpontban jelenik meg. Az Azure AD B2C ellenőrzi ezt az értéket, és elutasítja a jogkivonatot, ha a jogkivonat lejárt. |
Korábban nem | nbf |
1599482515 |
Az az időpont, amikor a jogkivonat érvényessé válik, az időszaki időpontban jelenik meg. Ez az idő általában megegyezik a jogkivonat kiállításának időpontjával. Az Azure AD B2C ellenőrzi ezt az értéket, és elutasítja a jogkivonatot, ha a jogkivonat élettartama nem érvényes. |
Az alábbi jogkivonat egy érvényes azonosító jogkivonat példája:
{
"alg": "HS256",
"typ": "JWT"
}.{
"displayName": " John Smith",
"userId": "john.s@contoso.com",
"nbf": 1599482515,
"exp": 1600087315,
"iss": "https://localhost",
"aud": "a489fc44-3cc0-4a78-92f6-e413cd853eae"
}
Protokoll
A Protokoll elem névattribútumát a következőre kell állítani None
: . A IdTokenHint_ExtractClaims technikai profil protokollja például a következőNone
:
<TechnicalProfile Id="IdTokenHint_ExtractClaims">
<DisplayName> My ID Token Hint TechnicalProfile</DisplayName>
<Protocol Name="None" />
...
A technikai profil meghívása egy vezénylési lépésből történik, amelynek típusa .GetClaims
<OrchestrationStep Order="1" Type="GetClaims" CpimIssuerTechnicalProfileReferenceId="IdTokenHint_ExtractClaims" />
Kimeneti jogcímek
Az OutputClaims elem a JWT-jogkivonatból kinyerendő jogcímek listáját tartalmazza. Előfordulhat, hogy le kell képeznie a házirendben meghatározott jogcím nevét a JWT-jogkivonatban meghatározott névre. A JWT-jogkivonat által nem visszaadott jogcímeket is felveheti, ha beállítja az DefaultValue
attribútumot.
Metaadatok
A szimmetrikus kulcs használatakor az alábbi metaadatok relevánsak.
Attribútum | Kötelező | Leírás |
---|---|---|
Kibocsátó | Igen | Azonosítja a biztonsági jogkivonat-szolgáltatást (tokenkibocsátó). Ennek az értéknek meg kell egyeznie a iss JWT-jogkivonat jogcímen belüli jogcímével. |
IdTokenAudience | Igen | A jogkivonat kívánt címzettjének azonosítása. A JWT-jogkivonat jogcímében szereplő jogcímnek aud meg kell egyeznie. |
A következő metaadatok relevánsak aszimmetrikus kulcsok használatakor.
Attribútum | Kötelező | Leírás |
---|---|---|
METAADAT | Igen | Egy olyan URL-cím, amely egy tokenkibocsátó konfigurációs dokumentumára mutat, amely openID jól ismert konfigurációs végpontként is ismert. |
Kibocsátó | Nem | Azonosítja a biztonsági jogkivonat-szolgáltatást (tokenkibocsátó). Ez az érték a metaadatokban konfigurált érték felülírására használható, és meg kell egyeznie a iss JWT-jogkivonat jogcímén belüli jogcímmel. |
IdTokenAudience | Nem | A jogkivonat kívánt címzettjének azonosítása. A JWT-jogkivonat jogcímében szereplő jogcímnek aud meg kell egyeznie. |
Fontos
A végpontoknak meg kell felelniük az Azure AD B2C biztonsági követelményeinek. A régebbi TLS-verziók és -titkosítások elavultak. További információ: Azure AD B2C TLS és titkosítási csomag követelményei.
Titkosítási kulcsok
Szimmetrikus kulcs használatakor a CryptographicKeys elem a következő attribútumot tartalmazza:
Attribútum | Kötelező | Leírás |
---|---|---|
client_secret | Igen | A JWT-jogkivonat aláírásának érvényesítéséhez használt titkosítási kulcs. |
Útmutató
Jogkivonat kiállítása szimmetrikus kulcsokkal
1. lépés: Megosztott kulcs létrehozása
Hozzon létre egy kulcsot, amely a jogkivonat aláírására használható. Például a következő PowerShell-kóddal hozhat létre egy kulcsot.
$bytes = New-Object Byte[] 32
$rand = [System.Security.Cryptography.RandomNumberGenerator]::Create()
$rand.GetBytes($bytes)
$rand.Dispose()
$newClientSecret = [System.Convert]::ToBase64String($bytes)
$newClientSecret
Ez a kód létrehoz egy olyan titkos sztringet, mint a VK62QTn0m1hMcn0DQ3RPYDAr6yIiSvYgdRwjZtU5QhI=
.
2. lépés: Az aláíró kulcs hozzáadása az Azure AD B2C-hez
A tokenkibocsátó által használt kulcsot az Azure AD B2C szabályzatkulcsaiban kell létrehozni.
- Jelentkezzen be az Azure Portalra.
- Ha több bérlőhöz is hozzáfér, a felső menüben válassza a Gépház ikont az Azure AD B2C-bérlőre való váltáshoz a Címtárak + előfizetések menüből.
- Az Azure Portalon keresse meg és válassza ki az Azure AD B2C-t.
- Az áttekintési lapon, a Szabályzatok területen válassza az Identity Experience Framework lehetőséget.
- Szabályzatkulcsok kiválasztása
- Válassza a Manuális lehetőséget.
- Névként használja a következőt
IdTokenHintKey
: .
Előfordulhat, hogy az előtagB2C_1A_
automatikusan hozzáadódik. - A Titkos kód mezőbe írja be a korábban létrehozott bejelentkezési kulcsot.
- Kulcshasználat esetén használja a titkosítást.
- Select Create.
- Ellenőrizze, hogy létrehozta-e a kulcsot
B2C_1A_IdTokenHintKey
.
3. lépés: Az azonosító jogkivonat hozzáadása technikai profilhoz
Az alábbi technikai profil ellenőrzi a jogkivonatot, és kinyeri a jogcímeket.
<ClaimsProvider>
<DisplayName>My ID Token Hint ClaimsProvider</DisplayName>
<TechnicalProfiles>
<TechnicalProfile Id="IdTokenHint_ExtractClaims">
<DisplayName> My ID Token Hint TechnicalProfile</DisplayName>
<Protocol Name="None" />
<Metadata>
<Item Key="IdTokenAudience">a489fc44-3cc0-4a78-92f6-e413cd853eae</Item>
<Item Key="issuer">https://localhost</Item>
</Metadata>
<CryptographicKeys>
<Key Id="client_secret" StorageReferenceId="B2C_1A_IdTokenHintKey" />
</CryptographicKeys>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="email" PartnerClaimType="userId" />
</OutputClaims>
</TechnicalProfile>
</TechnicalProfiles>
</ClaimsProvider>
4. lépés: A szabályzat előkészítése
Végezze el a szabályzat konfigurálását.
5. lépés: A kód előkészítése
A GitHub-minta egy ASP.NET webalkalmazás és konzolalkalmazás, amely szimmetrikus kulccsal aláírt azonosító jogkivonatot hoz létre.
Jogkivonat kiállítása aszimmetrikus kulcsokkal
Aszimmetrikus kulccsal a jogkivonat RSA-tanúsítványokkal van aláírva. Ez az alkalmazás egy OpenID Csatlakozás metaadat-végpontot és JSON-webkulcsokat (JWKs) tartalmazó végpontot üzemeltet, amelyet az Azure AD B2C használ az azonosító jogkivonat aláírásának ellenőrzéséhez.
A jogkivonat-kiállítónak a következő végpontokat kell megadnia:
/.well-known/openid-configuration
- Jól ismert konfigurációs végpont a jogkivonattal kapcsolatos releváns információkkal, például a jogkivonat kiállítójának nevével és a JWK-végpontra mutató hivatkozással./.well-known/keys
- a JSON webkulcs (JWK) végpontja a kulcs aláírásához használt nyilvános kulccsal (a tanúsítvány titkos kulcsával).
Tekintse meg a TokenMetadataController.cs
.NET MVC-vezérlő mintáját.
1. lépés: Önaláírt tanúsítvány előkészítése
Ha még nem rendelkezik tanúsítvánnyal, ehhez az útmutatóhoz használhat önaláírt tanúsítványt. Windows rendszeren a PowerShell New-SelfSignedCertificate parancsmagjával hozhat létre tanúsítványt.
Futtassa ezt a PowerShell-parancsot egy önaláírt tanúsítvány létrehozásához. Módosítsa az argumentumot az alkalmazás és az -Subject
Azure AD B2C-bérlő nevének megfelelően. A dátumot úgy is módosíthatja -NotAfter
, hogy a tanúsítvány lejárata eltérő legyen.
New-SelfSignedCertificate `
-KeyExportPolicy Exportable `
-Subject "CN=yourappname.yourtenant.onmicrosoft.com" `
-KeyAlgorithm RSA `
-KeyLength 2048 `
-KeyUsage DigitalSignature `
-NotAfter (Get-Date).AddMonths(12) `
-CertStoreLocation "Cert:\CurrentUser\My"
2. lépés: Az azonosító jogkivonat-emlékeztető technikai profiljának hozzáadása
Az alábbi technikai profil ellenőrzi a jogkivonatot, és kinyeri a jogcímeket. Módosítsa a metaadat-URI-t a tokenkibocsátó jól ismert konfigurációs végpontjához.
<ClaimsProvider>
<DisplayName>My ID Token Hint ClaimsProvider</DisplayName>
<TechnicalProfiles>
<TechnicalProfile Id="IdTokenHint_ExtractClaims">
<DisplayName> My ID Token Hint TechnicalProfile</DisplayName>
<Protocol Name="None" />
<Metadata>
<!-- Replace with your endpoint location -->
<Item Key="METADATA">https://your-app.azurewebsites.net/.well-known/openid-configuration</Item>
<Item Key="IdTokenAudience">your_optional_audience</Item>
<!-- <Item Key="issuer">your_optional_token_issuer_override</Item> -->
</Metadata>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="email" PartnerClaimType="userId" />
</OutputClaims>
</TechnicalProfile>
</TechnicalProfiles>
</ClaimsProvider>
3. lépés: A szabályzat előkészítése
Végezze el a szabályzat konfigurálását.
4. lépés: A kód előkészítése
Ez a GitHub-minta ASP.NET webalkalmazás azonosító jogkivonatokat hoz létre, és az Azure AD B2C-ben a "id_token_hint" paraméter használatához szükséges metaadat-végpontokat tárolja.
A szabályzat konfigurálása
Szimmetrikus és aszimmetrikus megközelítések esetén a id_token_hint
technikai profilt egy vezénylési lépésből hívjuk meg, amelynek GetClaims
típusa és meg kell adnia a függő entitás házirendjének bemeneti jogcímeit.
Adja hozzá a IdTokenHint_ExtractClaims technikai profilt a bővítményszabályzathoz.
Első elemként adja hozzá a következő vezénylési lépést a felhasználói folyamathoz.
<OrchestrationStep Order="1" Type="GetClaims" CpimIssuerTechnicalProfileReferenceId="IdTokenHint_ExtractClaims" />
A függő entitás házirendjében ismételje meg ugyanazokat a bemeneti jogcímeket, amelyeket a IdTokenHint_ExtractClaims technikai profilban konfigurált. Például:
<RelyingParty> <DefaultUserJourney ReferenceId="SignUp" /> <TechnicalProfile Id="PolicyProfile"> <DisplayName>PolicyProfile</DisplayName> <Protocol Name="OpenIdConnect" /> <InputClaims> <InputClaim ClaimTypeReferenceId="email" PartnerClaimType="userId" /> </InputClaims> <OutputClaims> <OutputClaim ClaimTypeReferenceId="displayName" /> <OutputClaim ClaimTypeReferenceId="givenName" /> <OutputClaim ClaimTypeReferenceId="surname" /> <OutputClaim ClaimTypeReferenceId="email" /> <OutputClaim ClaimTypeReferenceId="objectId" PartnerClaimType="sub"/> <OutputClaim ClaimTypeReferenceId="identityProvider" /> </OutputClaims> <SubjectNamingInfo ClaimType="sub" /> </TechnicalProfile> </RelyingParty>
Az üzleti követelményektől függően előfordulhat, hogy jogkivonat-érvényesítést kell hozzáadnia, például ellenőriznie kell az e-mail-cím formátumát. Ehhez adjon hozzá olyan vezénylési lépéseket, amelyek meghívják a jogcímátalakítás technikai profilját. Emellett adjon hozzá egy önérvényesített műszaki profilt is, amely hibaüzenetet jelenít meg.
Jogkivonat létrehozása és aláírása
A GitHub-minták bemutatják, hogyan hozhat létre ilyen jogkivonatot egy JWT-ről, amelyet később lekérdezési sztringparaméterként id_token_hint
küldtek. Az alábbi példa egy engedélyezési kérelemre id_token_hint paraméterrel
https://tenant-name.b2clogin.com/tenant-name.onmicrosoft.com/B2C_1A_signup_signin/oauth2/v2.0/authorize?client_id=63ba0d17-c4ba-47fd-89e9-31b3c2734339&nonce=defaultNonce&redirect_uri=https%3A%2F%2Fjwt.ms&scope=openid&response_type=id_token&prompt=login&id_token_hint=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJkaXNwbGF5TmFtZSI6IiBKb2huIFNtaXRoIiwidXNlcklkIjoiam9obi5zQGNvbnRvc28uY29tIiwibmJmIjoxNTk5NDgyNTE1LCJleHAiOjE2MDAwODczMTUsImlzcyI6Imh0dHBzOi8vbG9jYWxob3N0IiwiYXVkIjoiYTQ4OWZjNDQtM2NjMC00YTc4LTkyZjYtZTQxM2NkODUzZWFlIn0.nPmLXydI83PQCk5lRBYUZRu_aX58pL1khahHyQuupig
Következő lépések
- Az Azure AD B2C-közösség GitHub-adattárában ellenőrizze a regisztrációt meghívó e-mail-megoldással .