UserInfo végpont
Mielőtt hozzákezdene, a lap tetején található Szabályzattípus kiválasztása választóval válassza ki a beállított szabályzat típusát. Az Azure Active Directory B2C két módszert kínál annak meghatározására, hogy a felhasználók hogyan használják az alkalmazásokat: előre definiált felhasználói folyamatokon vagy teljesen konfigurálható egyéni szabályzatokon keresztül. A cikkben szereplő lépések különbözőek az egyes metódusok esetében.
A UserInfo végpont az OpenID Connect standard (OIDC) specifikációjának része, és a hitelesített felhasználóval kapcsolatos jogcímek visszaadására szolgál. A UserInfo végpontot a függő entitás házirendje határozza meg az EndPoint-elem használatával.
Ez a funkció csak egyéni szabályzatokhoz érhető el. A beállítási lépésekhez válassza az egyéni szabályzatot az előző választóban.
Előfeltételek
- Végezze el az Egyéni szabályzatok használatának első lépéseit az Active Directory B2C-ben. Ez az oktatóanyag bemutatja, hogyan frissítheti az egyéni szabályzatfájlokat az Azure AD B2C-bérlő konfigurációjának használatára.
- Ha még nem regisztrált webalkalmazást, regisztráljon egyet a webalkalmazás regisztrálásának lépéseivel.
A UserInfo végpont áttekintése
A UserJourney által megadott felhasználói adatok:
- Engedélyezés: A UserInfo végpontot egy tulajdonosi jogkivonat védi. Egy kiadott hozzáférési jogkivonat jelenik meg a UserInfo végpont engedélyezési fejlécében. A szabályzat meghatározza a technikai profilt, amely ellenőrzi a bejövő jogkivonatot, és jogcímeket nyer ki, például a felhasználó objectId azonosítóját. A felhasználó objectId azonosítója a UserInfo végpontút válaszában visszaadandó jogcímek lekérésére szolgál.
- Vezénylési lépés:
- A vezénylési lépéssel információkat gyűjthet a felhasználóról. A bejövő hozzáférési jogkivonaton belüli jogcímek alapján a felhasználói folyamat meghív egy Microsoft Entra ID technikai profilt , amely adatokat kér le a felhasználóról, például a felhasználót az objectId alapján olvassa be.
- Választható vezénylési lépések – További vezénylési lépéseket is hozzáadhat, például egy REST API technikai profilt a felhasználóval kapcsolatos további információk lekéréséhez.
- UserInfo-kiállító – A UserInfo végpont által visszaadott jogcímek listáját adja meg.
UserInfo-végpont létrehozása
1. Adja hozzá a tokenkibocsátó technikai profilját
Nyissa meg a TrustFrameworkExtensions.xml fájlt.
Ha még nem létezik, adjon hozzá egy ClaimsProvider-elemet és annak gyermekelemeit a BuildingBlocks elem első elemeként.
Adja hozzá a következő jogcímszolgáltatót:
<!-- <ClaimsProviders> --> <ClaimsProvider> <DisplayName>Token Issuer</DisplayName> <TechnicalProfiles> <TechnicalProfile Id="UserInfoIssuer"> <DisplayName>JSON Issuer</DisplayName> <Protocol Name="None" /> <OutputTokenFormat>JSON</OutputTokenFormat> <CryptographicKeys> <Key Id="issuer_secret" StorageReferenceId="B2C_1A_TokenSigningKeyContainer" /> </CryptographicKeys> <!-- The Below claims are what will be returned on the UserInfo Endpoint if in the Claims Bag--> <InputClaims> <InputClaim ClaimTypeReferenceId="objectId"/> <InputClaim ClaimTypeReferenceId="givenName"/> <InputClaim ClaimTypeReferenceId="surname"/> <InputClaim ClaimTypeReferenceId="displayName"/> <InputClaim ClaimTypeReferenceId="signInNames.emailAddress"/> </InputClaims> </TechnicalProfile> <TechnicalProfile Id="UserInfoAuthorization"> <DisplayName>UserInfo authorization</DisplayName> <Protocol Name="None" /> <InputTokenFormat>JWT</InputTokenFormat> <Metadata> <!-- Update the Issuer and Audience below --> <!-- Audience is optional, Issuer is required--> <Item Key="issuer">https://yourtenant.b2clogin.com/aaaabbbb-0000-cccc-1111-dddd2222eeee/v2.0/</Item> <Item Key="audience">[ "00001111-aaaa-2222-bbbb-3333cccc4444", "11112222-bbbb-3333-cccc-4444dddd5555" ]</Item> <Item Key="client_assertion_type">urn:ietf:params:oauth:client-assertion-type:jwt-bearer</Item> </Metadata> <CryptographicKeys> <Key Id="issuer_secret" StorageReferenceId="B2C_1A_TokenSigningKeyContainer" /> </CryptographicKeys> <OutputClaims> <OutputClaim ClaimTypeReferenceId="objectId" PartnerClaimType="sub"/> <OutputClaim ClaimTypeReferenceId="signInNames.emailAddress" PartnerClaimType="email"/> <!-- Optional claims to read from the access token. --> <!-- <OutputClaim ClaimTypeReferenceId="givenName" PartnerClaimType="given_name"/> <OutputClaim ClaimTypeReferenceId="surname" PartnerClaimType="family_name"/> <OutputClaim ClaimTypeReferenceId="displayName" PartnerClaimType="name"/> --> </OutputClaims> </TechnicalProfile> </TechnicalProfiles> </ClaimsProvider> <!-- </ClaimsProviders> -->
A UserInfoIssuer műszaki profil InputClaims szakasza határozza meg a visszaadni kívánt attribútumokat. A UserInfoIssuer technikai profil meghívása a felhasználói folyamat végén történik.
A UserInfoAuthorization technikai profil 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. Módosítsa a következő metaadatokat a környezetének megfelelően:
kiállító – Ennek az értéknek meg kell egyeznie a
iss
hozzáférési jogkivonat jogcímen belüli jogcímével. Az Azure AD B2C által kibocsátott jogkivonatok egy kiállítót használnak.https://yourtenant.b2clogin.com/your-tenant-id/v2.0/
További információ a jogkivonatok testreszabásáról.IdTokenAudience – Meg kell egyeznie a
aud
hozzáférési jogkivonat jogcímén belüli jogcímével. Az Azure AD B2C-ben aaud
jogcím a függő entitásalkalmazás azonosítója. Ez az érték gyűjtemény, és több értéket támogat vesszőelválasztó használatával.A következő hozzáférési jogkivonatban a
iss
jogcím értéke .https://contoso.b2clogin.com/aaaabbbb-0000-cccc-1111-dddd2222eeee/v2.0/
Aaud
jogcím értéke .00001111-aaaa-2222-bbbb-3333cccc4444
{ "exp": 1605549468, "nbf": 1605545868, "ver": "1.0", "iss": "https://contoso.b2clogin.com/11111111-1111-1111-1111-111111111111/v2.0/", "sub": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb", "aud": "00001111-aaaa-2222-bbbb-3333cccc4444", "acr": "b2c_1a_signup_signin", "nonce": "defaultNonce", "iat": 1605545868, "auth_time": 1605545868, "name": "John Smith", "given_name": "John", "family_name": "Smith", "tid": "aaaabbbb-0000-cccc-1111-dddd2222eeee" }
A UserInfoAuthorization technikai profil OutputClaims eleme határozza meg a hozzáférési jogkivonatból beolvasni kívánt attribútumokat. A ClaimTypeReferenceId egy jogcímtípusra mutató hivatkozás. Az opcionális PartnerClaimType a hozzáférési jogkivonatban meghatározott jogcím neve.
2. A UserJourney elem hozzáadása
A UserJourney elem határozza meg, hogy a felhasználó milyen elérési utat használ az alkalmazással való interakció során. Adja hozzá a UserJourneys elemet, ha nem létezik a Következőként UserInfoJourney
azonosított UserJourney-val:
<!--
<UserJourneys> -->
<UserJourney Id="UserInfoJourney" DefaultCpimIssuerTechnicalProfileReferenceId="UserInfoIssuer">
<Authorization>
<AuthorizationTechnicalProfiles>
<AuthorizationTechnicalProfile ReferenceId="UserInfoAuthorization" />
</AuthorizationTechnicalProfiles>
</Authorization>
<OrchestrationSteps >
<OrchestrationStep Order="1" Type="ClaimsExchange">
<Preconditions>
<Precondition Type="ClaimsExist" ExecuteActionsIf="false">
<Value>objectId</Value>
<Action>SkipThisOrchestrationStep</Action>
</Precondition>
</Preconditions>
<ClaimsExchanges UserIdentity="false">
<ClaimsExchange Id="AADUserReadWithObjectId" TechnicalProfileReferenceId="AAD-UserReadUsingObjectId" />
</ClaimsExchanges>
</OrchestrationStep>
<OrchestrationStep Order="2" Type="SendClaims" CpimIssuerTechnicalProfileReferenceId="UserInfoIssuer" />
</OrchestrationSteps>
</UserJourney>
<!--
</UserJourneys> -->
3. A végpont belefoglalása a függő entitás házirendbe
Ha fel szeretné venni a UserInfo végpontot a függő entitásalkalmazásba, adjon hozzá egy Végpont elemet a SocialAndLocalAccounts/SignUpOrSignIn.xml fájlhoz.
<!--
<RelyingParty> -->
<Endpoints>
<Endpoint Id="UserInfo" UserJourneyReferenceId="UserInfoJourney" />
</Endpoints>
<!--
</RelyingParty> -->
A befejezett függő entitáselem a következő lesz:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<TrustFrameworkPolicy xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns="http://schemas.microsoft.com/online/cpim/schemas/2013/06" PolicySchemaVersion="0.3.0.0" TenantId="yourtenant.onmicrosoft.com" PolicyId="B2C_1A_signup_signin" PublicPolicyUri="http://yourtenant.onmicrosoft.com/B2C_1A_signup_signin">
<BasePolicy>
<TenantId>yourtenant.onmicrosoft.com</TenantId>
<PolicyId>B2C_1A_TrustFrameworkExtensions</PolicyId>
</BasePolicy>
<RelyingParty>
<DefaultUserJourney ReferenceId="SignUpOrSignIn" />
<Endpoints>
<Endpoint Id="UserInfo" UserJourneyReferenceId="UserInfoJourney" />
</Endpoints>
<TechnicalProfile Id="PolicyProfile">
<DisplayName>PolicyProfile</DisplayName>
<Protocol Name="OpenIdConnect" />
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="displayName" />
<OutputClaim ClaimTypeReferenceId="givenName" />
<OutputClaim ClaimTypeReferenceId="surname" />
<OutputClaim ClaimTypeReferenceId="email" />
<OutputClaim ClaimTypeReferenceId="objectId" PartnerClaimType="sub"/>
<OutputClaim ClaimTypeReferenceId="tenantId" AlwaysUseDefaultValue="true" DefaultValue="{Policy:TenantObjectId}" />
</OutputClaims>
<SubjectNamingInfo ClaimType="sub" />
</TechnicalProfile>
</RelyingParty>
</TrustFrameworkPolicy>
4. A fájlok feltöltése
- Jelentkezzen be az Azure Portalra.
- Ha több bérlőhöz is hozzáfér, a felső menü Beállítások ikonját választva válthat az Azure AD B2C-bérlőre a Címtárak + előfizetések menüből.
- Válassza az Összes szolgáltatást az Azure Portal bal felső sarkában, majd keresse meg és válassza az Azure AD B2C-t.
- Válassza az Identity Experience Framework lehetőséget.
- Az Egyéni szabályzatok lapon válassza az Egyéni szabályzat feltöltése lehetőséget.
- Válassza az Egyéni szabályzat felülírása lehetőséget, ha már létezik, majd keresse meg és jelölje ki a TrustframeworkExtensions.xml fájlt.
- Kattintson a Feltöltés gombra.
- Ismételje meg az 5–7. lépést a függő entitásfájl esetében, például SignUpOrSignIn.xml.
A UserInfo-végpont meghívása
A UserInfo végpont a standard OAuth2 Bearer token API-t használja, amelyet az alkalmazás jogkivonatának lekérésekor kapott hozzáférési jogkivonat használatával hív meg. JSON-választ ad vissza, amely a felhasználóval kapcsolatos jogcímeket tartalmazza. A UserInfo végpont az Azure AD B2C-n található:
https://yourtenant.b2clogin.com/yourtenant.onmicrosoft.com/policy-name/openid/v2.0/userinfo
A /.jól ismert konfigurálási végpont (OpenID Connect felderítési dokumentum) felsorolja a userinfo_endpoint
mezőt. A UserInfo végpont programozott módon felderíthető a /.jól ismert konfigurálási végponttal a következő helyen:
https://yourtenant.b2clogin.com/yourtenant.onmicrosoft.com/policy-name/v2.0/.well-known/openid-configuration
A szabályzat tesztelése
- Az Egyéni szabályzatok csoportban válassza ki azt a szabályzatot, amellyel integrálta a UserInfo végpontot. Például B2C_1A_SignUpOrSignIn.
- Válassza a Futtatás most lehetőséget.
- Az Alkalmazás kiválasztása területen válassza ki a korábban regisztrált alkalmazást. Válassza ki a válasz URL-címét.
https://jwt.ms
További információ: Webalkalmazás regisztrálása az Azure Active Directory B2C-ben. - Regisztráljon vagy jelentkezzen be egy e-mail-címmel vagy egy közösségi fiókkal.
- Másolja a id_token kódolt formátumban a https://jwt.ms webhelyről. Ezzel get kérést küldhet a UserInfo végpontnak, és lekérheti a felhasználói adatokat.
- Küldjön get kérést a UserInfo végpontnak, és kérje le a felhasználói adatokat.
GET /yourtenant.onmicrosoft.com/b2c_1a_signup_signin/openid/v2.0/userinfo
Host: b2cninja.b2clogin.com
Authorization: Bearer <your access token>
A sikeres válasz a következőképpen néz ki:
{
"objectId": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb",
"givenName": "John",
"surname": "Smith",
"displayName": "John Smith",
"signInNames.emailAddress": "john.s@contoso.com"
}
Választható jogcímek megadása
Ha további jogcímeket szeretne biztosítani az alkalmazásnak, kövesse az alábbi lépéseket:
Adjon hozzá felhasználói attribútumokat, és szabja testre a felhasználói bemenetet.
Módosítsa a függő entitás házirendjének OutputClaims elemét a megadni kívánt jogcímekkel.
DefaultValue
Az attribútum használatával állítsa be az alapértelmezett értéket. Az alapértelmezett értéket egy jogcímfeloldóra is beállíthatja, például{Context:CorrelationId}
. Az alapértelmezett érték használatának kényszerítéséhez állítsa az attribútumot aAlwaysUseDefaultValue
következőretrue
: . Az alábbi példa egy alapértelmezett értékkel adja hozzá a városi jogcímet.<RelyingParty> ... <TechnicalProfile Id="PolicyProfile"> ... <OutputClaims> <OutputClaim ClaimTypeReferenceId="city" DefaultValue="Berlin" /> </OutputClaims> ... </TechnicalProfile> </RelyingParty>
Módosítsa a UserInfoIssuer technikai profil InputClaims elemét a megadni kívánt jogcímekkel.
PartnerClaimType
Az attribútum használatával módosíthatja az alkalmazáshoz visszaküldött jogcím nevét. Az alábbi példa hozzáadja a városi jogcímet, és megváltoztatja egyes jogcímek nevét.<TechnicalProfile Id="UserInfoIssuer"> ... <InputClaims> <InputClaim ClaimTypeReferenceId="objectId" /> <InputClaim ClaimTypeReferenceId="city" /> <InputClaim ClaimTypeReferenceId="givenName" /> <InputClaim ClaimTypeReferenceId="surname" PartnerClaimType="familyName" /> <InputClaim ClaimTypeReferenceId="displayName" PartnerClaimType="name" /> <InputClaim ClaimTypeReferenceId="signInNames.emailAddress" PartnerClaimType="email" /> </InputClaims> ... </TechnicalProfile>