Megosztás a következőn keresztül:


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

  1. Nyissa meg a TrustFrameworkExtensions.xml fájlt.

  2. Ha még nem létezik, adjon hozzá egy ClaimsProvider-elemet és annak gyermekelemeit a BuildingBlocks elem első elemeként.

  3. 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> -->
    
  4. 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.

  5. 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:

    1. 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.

    2. IdTokenAudience – Meg kell egyeznie a aud hozzáférési jogkivonat jogcímén belüli jogcímével. Az Azure AD B2C-ben a aud 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/ A aud 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"
      }
      
  6. 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 UserInfoJourneyazonosí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

  1. Jelentkezzen be az Azure Portalra.
  2. 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.
  3. 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.
  4. Válassza az Identity Experience Framework lehetőséget.
  5. Az Egyéni szabályzatok lapon válassza az Egyéni szabályzat feltöltése lehetőséget.
  6. 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.
  7. Kattintson a Feltöltés gombra.
  8. 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

  1. 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.
  2. Válassza a Futtatás most lehetőséget.
  3. 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.
  4. Regisztráljon vagy jelentkezzen be egy e-mail-címmel vagy egy közösségi fiókkal.
  5. 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.
  6. 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:

  1. Adjon hozzá felhasználói attribútumokat, és szabja testre a felhasználói bemenetet.

  2. 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 a AlwaysUseDefaultValue következőre true: . 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>
    
  3. 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>
    

Következő lépések

  • A GitHubon egy UserInfo-végpontszabályzatra találhat példát.