Gebruikerskenmerken toevoegen en gebruikersinvoer aanpassen in Azure Active Directory B2C

Voordat u begint, gebruikt u de bovenstaande kiezer om het type beleid te kiezen dat u wilt configureren. Azure AD B2C biedt twee methoden om te definiëren hoe gebruikers met uw toepassingen communiceren: via vooraf gedefinieerde gebruikers stromenof door volledig configureerbaar aangepast beleid. De stappen die in dit artikel zijn vereist, verschillen voor elke methode.

In dit artikel verzamelt u een nieuw kenmerk tijdens uw aanmeldingstraject in Azure Active Directory B2C (Azure AD B2C). U verkrijgt de plaats van de gebruiker, configureert deze als vervolgkeuze en definieert of deze moet worden opgegeven.

Belangrijk

In dit voorbeeld wordt de ingebouwde claim 'stad' gebruikt. In plaats daarvan kunt u een van de ondersteunde Azure AD B2C ingebouwde kenmerken of een aangepast kenmerk. Als u een aangepast kenmerk wilt gebruiken, moet u aangepaste kenmerken inschakelen. Als u een ander ingebouwd of aangepast kenmerk wilt gebruiken, vervangt u 'plaats' door het kenmerk van uw keuze, bijvoorbeeld het ingebouwde kenmerk jobTitle of een aangepast kenmerk zoals extension_loyaltyId .

Vereisten

Gebruikerskenmerken toevoegen aan uw gebruikersstroom

  1. Selecteer gebruikersstromen Azure AD B2C uw tenant.
  2. Selecteer uw beleid (bijvoorbeeld 'B2C_1_SignupSignin') om het te openen.
  3. Selecteer Gebruikerskenmerken en selecteer vervolgens het gebruikerskenmerk (bijvoorbeeld 'Plaats').
  4. Selecteer Opslaan.

Optionele claims aan uw app verstrekken

De toepassingsclaims zijn waarden die worden geretourneerd naar de toepassing. Werk uw gebruikersstroom bij met de gewenste claims.

  1. Selecteer uw beleid (bijvoorbeeld 'B2C_1_SignupSignin') om het te openen.
  2. Selecteer Toepassingsclaims.
  3. Selecteer kenmerken die u wilt terugsturen naar uw toepassing (bijvoorbeeld 'Plaats').
  4. Selecteer Opslaan.

Invoertype gebruikerskenmerken configureren

  1. Selecteer uw beleid (bijvoorbeeld 'B2C_1_SignupSignin') om het te openen.
  2. Selecteer Pagina-indelingen.
  3. Selecteer De aanmeldingspagina van het lokale account.
  4. Selecteer onder Gebruikerskenmerken de optie Plaats.
    1. Selecteer in de vervolgkeuzekeuze vervolgkeuzepy Gebruikersinvoer de optie VervolgkeuzekeuzeSingleSelecteren. Optioneel: Gebruik de knoppen Omhoog/omlaag om de tekstorder op de aanmeldingspagina te rangschikt.
    2. Selecteer Nee in de vervolgkeuzeoptionele.
  5. Selecteer Opslaan.

Geef een lijst met waarden op met behulp van gelokaliseerde verzamelingen

Een set waarden voor het plaatskenmerk geven:

  1. Taalaanpassing inschakelen voor de gebruikersstroom
  2. Selecteer uw beleid (bijvoorbeeld 'B2C_1_SignupSignin') om het te openen.
  3. Selecteer op de pagina Talen voor de gebruikersstroom de taal die u wilt aanpassen.
  4. Selecteer onder Resources op paginaniveau de optie Aanmeldingspagina van lokaal account.
  5. Selecteer Standaardinstellingen downloaden (of Overschrijvingen downloaden als u deze taal eerder hebt bewerkt).
  6. Maak een LocalizedCollections kenmerk.

De LocalizedCollections is een matrix van paren en Name Value . De volgorde voor de items is de volgorde die wordt weergegeven.

  • ElementId is het gebruikerskenmerk waar LocalizedCollections dit kenmerk een antwoord op is.
  • Name is de waarde die aan de gebruiker wordt weergegeven.
  • Value is wat er wordt geretourneerd in de claim wanneer deze optie is geselecteerd.
{
  "LocalizedStrings": [...],
  "LocalizedCollections": [
    {
      "ElementType": "ClaimType",
      "ElementId": "city",
      "TargetCollection": "Restriction",
      "Override": true,
      "Items": [
        {
          "Name": "Berlin",
          "Value": "Berlin"
        },
        {
          "Name": "London",
          "Value": "London"
        },
        {
          "Name": "Seattle",
          "Value": "Seattle"
        }
      ]
    }
  ]
}

Uw wijzigingen uploaden

  1. Nadat u de wijzigingen in uw JSON-bestand hebt voltooid, gaat u terug naar uw B2C-tenant.
  2. Selecteer Gebruikersstromen en selecteer uw beleid (bijvoorbeeld 'B2C_1_SignupSignin') om het te openen.
  3. Selecteer Talen.
  4. Selecteer de taal die u wilt vertalen.
  5. Selecteer de aanmeldingspagina van het lokale account.
  6. Selecteer het mappictogram en selecteer het JSON-bestand dat u wilt uploaden. De wijzigingen worden automatisch opgeslagen in uw gebruikersstroom.

Uw gebruikersstroom testen

  1. Selecteer uw beleid (bijvoorbeeld 'B2C_1_SignupSignin') om het te openen.
  2. Selecteer Gebruikersstroom uitvoeren om uw beleid te testen.
  3. Selecteer bij Toepassing de webtoepassing met de naam testapp1 die u eerder hebt geregistreerd. De antwoord-URL moet https://jwt.ms weergeven.
  4. Klik op Gebruikersstroom uitvoeren

Overzicht

U kunt initiële gegevens van uw gebruikers verzamelen met behulp van het gebruikerstraject voor registreren of aanmelden. Aanvullende claims kunnen later worden verzameld met behulp van een gebruikerstraject voor het bewerken van profielen. Steeds wanneer Azure AD B2C gegevens rechtstreeks van de gebruiker verzamelt, wordt het zelf-bevestigd technische profiel gebruikt. In dit voorbeeld gaat u het volgende doen:

  1. Definieer een 'stad'-claim.
  2. Vraag de gebruiker om zijn plaats.
  3. Zet de plaats op in het gebruikersprofiel in de Azure AD B2C directory.
  4. Lees de plaatsclaim in de Azure AD B2C bij elke aanmelding.
  5. Keer de plaats terug naar uw Relying Party-toepassing na aanmelding of aanmelding.

Een claim definiëren

Een claim biedt een tijdelijke opslag van gegevens tijdens een Azure AD B2C uitvoering van het beleid. Het claimschema is de plaats waar u uw claims declareert. De volgende elementen worden gebruikt om de claim te definiëren:

  • DisplayName: een tekenreeks die het gebruikerslabel definieert.
  • DataType: het type claim.
  • UserHelpText: helpt de gebruiker te begrijpen wat vereist is.
  • UserInputType: het type invoerbesturingselement, zoals tekstvak, keuzerondje, vervolgkeuzelijst of meerdere selecties.

Open het extensiebestand van uw beleid. Bijvoorbeeld SocialAndLocalAccounts/TrustFrameworkExtensions.xml .

  1. Zoek het element BuildingBlocks. Als het element niet bestaat, voegt u het toe.
  2. Zoek het element ClaimsSchema. Als het element niet bestaat, voegt u het toe.
  3. Voeg de plaatsclaim toe aan het element ClaimsSchema.
<!-- 
<BuildingBlocks>
  <ClaimsSchema> -->
    <ClaimType Id="city">
      <DisplayName>City where you work</DisplayName>
      <DataType>string</DataType>
      <UserInputType>DropdownSingleSelect</UserInputType>
      <Restriction>
        <Enumeration Text="Berlin" Value="berlin" />
        <Enumeration Text="London" Value="bondon" />
        <Enumeration Text="Seattle" Value="seattle" />
      </Restriction>
    </ClaimType>
  <!-- 
  </ClaimsSchema>
</BuildingBlocks>-->

Neem het kenmerk SelectByDefault op in een element om dit standaard te selecteren wanneer de pagina voor het eerst Enumeration wordt geladen. Als u bijvoorbeeld vooraf het item Londen wilt selecteren, wijzigt u het Enumeration element als het volgende voorbeeld:

<Restriction>
  <Enumeration Text="Berlin" Value="berlin" />
  <Enumeration Text="London" Value="bondon" SelectByDefault="true" />
  <Enumeration Text="Seattle" Value="seattle" />
</Restriction>

Een claim toevoegen aan de gebruikersinterface

De volgende technische profielen worden zelf bevestigd enaangeroepen wanneer van een gebruiker wordt verwacht dat deze invoer levert:

  • LocalAccountSignUpWithLogonEmail : aanmeldingsstroom voor lokaal account.
  • SelfAsserted-Social: federatief account voor de eerste keer aanmelden van gebruikers.
  • SelfAsserted-ProfileUpdate: profielstroom bewerken.

Als u de stadsclaim wilt verzamelen tijdens de aanmelding, moet deze worden toegevoegd als uitvoerclaim voor LocalAccountSignUpWithLogonEmail het technische profiel. Overschrijven dit technische profiel in het extensiebestand. Geef de volledige lijst met uitvoerclaims op om de volgorde te bepalen waarin de claims op het scherm worden weergegeven. Zoek het element ClaimsProviders. Voeg als volgt een nieuwe ClaimsProviders toe:

<ClaimsProvider>
  <DisplayName>Local Account</DisplayName>
  <TechnicalProfiles>
    <!--Local account sign-up page-->
    <TechnicalProfile Id="LocalAccountSignUpWithLogonEmail">
      <OutputClaims>
       <OutputClaim ClaimTypeReferenceId="email" PartnerClaimType="Verified.Email" Required="true" />
       <OutputClaim ClaimTypeReferenceId="newPassword" Required="true" />
       <OutputClaim ClaimTypeReferenceId="reenterPassword" Required="true" />
       <OutputClaim ClaimTypeReferenceId="displayName" />
       <OutputClaim ClaimTypeReferenceId="givenName" />
       <OutputClaim ClaimTypeReferenceId="surName" />
       <OutputClaim ClaimTypeReferenceId="city"/>
     </OutputClaims>
   </TechnicalProfile>
  </TechnicalProfiles>
</ClaimsProvider>

Als u de plaatsclaim wilt verzamelen na de eerste aanmelding met een federatief account, moet deze worden toegevoegd als uitvoerclaim voor het SelfAsserted-Social technische profiel. Als u wilt dat gebruikers van lokale en federatief account hun profielgegevens later kunnen bewerken, voegt u de invoer- en uitvoerclaims toe aan het SelfAsserted-ProfileUpdate technische profiel. Overschrijven deze technische profielen in het extensiebestand. Geef de volledige lijst met uitvoerclaims op om de volgorde te bepalen waarin de claims op het scherm worden weergegeven. Zoek het element ClaimsProviders. Voeg als volgt een nieuwe ClaimsProviders toe:

<ClaimsProvider>
  <DisplayName>Self Asserted</DisplayName>
  <TechnicalProfiles>
    <!--Federated account first-time sign-in page-->
    <TechnicalProfile Id="SelfAsserted-Social">
      <InputClaims>
        <InputClaim ClaimTypeReferenceId="city" />
      </InputClaims>
      <OutputClaims>
        <OutputClaim ClaimTypeReferenceId="displayName"/>
        <OutputClaim ClaimTypeReferenceId="givenName"/>
        <OutputClaim ClaimTypeReferenceId="surname"/>
        <OutputClaim ClaimTypeReferenceId="city"/>
      </OutputClaims>
    </TechnicalProfile>
    <!--Edit profile page-->
    <TechnicalProfile Id="SelfAsserted-ProfileUpdate">
      <InputClaims>
        <InputClaim ClaimTypeReferenceId="city" />
      </InputClaims>
      <OutputClaims>
        <OutputClaim ClaimTypeReferenceId="displayName"/>
        <OutputClaim ClaimTypeReferenceId="givenName" />
        <OutputClaim ClaimTypeReferenceId="surname" />
        <OutputClaim ClaimTypeReferenceId="city"/>
      </OutputClaims>
    </TechnicalProfile>
  </TechnicalProfiles>
</ClaimsProvider>

Een claim lezen en schrijven

De volgende technische profielen zijn technische profielen van Active Directory,die gegevens lezen en schrijven naar Azure Active Directory.
Gebruik om gegevens naar het gebruikersprofiel te schrijven en om gegevens te lezen uit het PersistedClaims OutputClaims gebruikersprofiel binnen de respectieve technische profielen van Active Directory.

Overschrijven deze technische profielen in het extensiebestand. Zoek het element ClaimsProviders. Voeg als volgt een nieuwe ClaimsProviders toe:

<ClaimsProvider>
  <DisplayName>Azure Active Directory</DisplayName>
  <TechnicalProfiles>
    <!-- Write data during a local account sign-up flow. -->
    <TechnicalProfile Id="AAD-UserWriteUsingLogonEmail">
      <PersistedClaims>
        <PersistedClaim ClaimTypeReferenceId="city"/>
      </PersistedClaims>
    </TechnicalProfile>
    <!-- Write data during a federated account first-time sign-in flow. -->
    <TechnicalProfile Id="AAD-UserWriteUsingAlternativeSecurityId">
      <PersistedClaims>
        <PersistedClaim ClaimTypeReferenceId="city"/>
      </PersistedClaims>
    </TechnicalProfile>
    <!-- Write data during edit profile flow. -->
    <TechnicalProfile Id="AAD-UserWriteProfileUsingObjectId">
      <PersistedClaims>
        <PersistedClaim ClaimTypeReferenceId="city"/>
      </PersistedClaims>
    </TechnicalProfile>
    <!-- Read data after user resets the password. -->
    <TechnicalProfile Id="AAD-UserReadUsingEmailAddress">
      <OutputClaims>  
        <OutputClaim ClaimTypeReferenceId="city" />
      </OutputClaims>
    </TechnicalProfile>
    <!-- Read data after user authenticates with a local account. -->
    <TechnicalProfile Id="AAD-UserReadUsingObjectId">
      <OutputClaims>  
        <OutputClaim ClaimTypeReferenceId="city" />
      </OutputClaims>
    </TechnicalProfile>
    <!-- Read data after user authenticates with a federated account. -->
    <TechnicalProfile Id="AAD-UserReadUsingAlternativeSecurityId">
      <OutputClaims>  
        <OutputClaim ClaimTypeReferenceId="city" />
      </OutputClaims>
    </TechnicalProfile>
  </TechnicalProfiles>
</ClaimsProvider>

Een claim opnemen in het token

Als u de plaatsclaim wilt retourneren naar de relying party-toepassing, voegt u een uitvoerclaim toe aan het SocialAndLocalAccounts/SignUpOrSignIn.xml bestand. De uitvoerclaim wordt toegevoegd aan het token na een geslaagde gebruikerservaring en wordt naar de toepassing verzonden. Wijzig het technische profielelement in de sectie relying party om de plaats toe te voegen als uitvoerclaim.

<RelyingParty>
  <DefaultUserJourney ReferenceId="SignUpOrSignIn" />
  <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="identityProvider" />
      <OutputClaim ClaimTypeReferenceId="tenantId" AlwaysUseDefaultValue="true" DefaultValue="{Policy:TenantObjectId}" />
      <OutputClaim ClaimTypeReferenceId="city" DefaultValue="" />
    </OutputClaims>
    <SubjectNamingInfo ClaimType="sub" />
  </TechnicalProfile>
</RelyingParty>

Uw bijgewerkte aangepaste beleid uploaden en testen

  1. Zorg ervoor dat u de map gebruikt die uw Azure AD B2C-tenant bevat door in het bovenste menu te klikken op het filter Map en abonnement en de map te kiezen waarin de tenant zich bevindt.
  2. Zoek en selecteer Azure AD B2C.
  3. Selecteer onder Beleid de optie Identity Experience Framework.
  4. Selecteer Aangepast beleid uploaden.
  5. Upload de beleidsbestanden die u eerder hebt gewijzigd.

Het aangepaste beleid testen

  1. Selecteer uw relying party-beleid, bijvoorbeeld B2C_1A_signup_signin .
  2. Selecteer bij Toepassing een webtoepassing die u eerder hebt geregistreerd. De antwoord-URL moet https://jwt.ms weergeven.
  3. Selecteer de knop Nu uitvoeren.
  4. Selecteer op de pagina voor registreren of aanmelden de optie Nu registreren om u te registreren. Als u klaar bent met het invoeren van de gebruikersgegevens, inclusief de plaatsnaam, klikt u vervolgens op Maken. Als het goed is, ziet u de inhoud van het token dat is geretourneerd.

Het aanmeldingsscherm moet er ongeveer uitzien als in de volgende schermafbeelding:

Schermopname van de gewijzigde aanmeldingsoptie

Het token dat wordt teruggestuurd naar uw toepassing bevat de city claim.

{
  "typ": "JWT",
  "alg": "RS256",
  "kid": "X5eXk4xyojNFum1kl2Ytv8dlNP4-c57dO6QGTVBwaNk"
}.{
  "exp": 1583500140,
  "nbf": 1583496540,
  "ver": "1.0",
  "iss": "https://contoso.b2clogin.com/f06c2fe8-709f-4030-85dc-38a4bfd9e82d/v2.0/",
  "aud": "e1d2612f-c2bc-4599-8e7b-d874eaca1ee1",
  "acr": "b2c_1a_signup_signin",
  "nonce": "defaultNonce",
  "iat": 1583496540,
  "auth_time": 1583496540,
  "name": "Emily Smith",
  "email": "joe@outlook.com",
  "given_name": "Emily",
  "family_name": "Smith",
  "city": "Berlin"
  ...
}

[Optioneel] De gebruikersinterface lokaliseren

Azure AD B2C kunt u uw beleid in verschillende talen gebruiken. Meer informatie over het aanpassen van de taalervaring vindt u in. Als u de aanmeldingspaginawilt lokaliseren, stelt u de lijst met ondersteunde talen in en geeft u taalspecifieke labels op.

Notitie

Wanneer u de LocalizedCollection gebruikt met de taalspecifieke labels, kunt u de Restriction verzameling verwijderen uit de claimdefinitie.

In het volgende voorbeeld wordt gedemonstreerd hoe u de lijst met steden op te geven voor Engels en Spaans. Beide stellen de Restriction verzameling van de claim city in met een lijst met items voor Engels en Spaans. Met SelectByDefault wordt standaard een item geselecteerd wanneer de pagina voor het eerst wordt geladen.

<!-- 
<BuildingBlocks>-->
  <Localization Enabled="true">
    <SupportedLanguages DefaultLanguage="en" MergeBehavior="Append">
      <SupportedLanguage>en</SupportedLanguage>
      <SupportedLanguage>es</SupportedLanguage>
    </SupportedLanguages>
    <LocalizedResources Id="api.localaccountsignup.en">
      <LocalizedCollections>
        <LocalizedCollection ElementType="ClaimType" ElementId="city" TargetCollection="Restriction">
          <Item Text="Berlin" Value="Berlin"></Item>
          <Item Text="London" Value="London" SelectByDefault="true"></Item>
          <Item Text="Seattle" Value="Seattle"></Item>
        </LocalizedCollection>
      </LocalizedCollections>
    </LocalizedResources>
    <LocalizedResources Id="api.localaccountsignup.es">
      <LocalizedCollections>
        <LocalizedCollection ElementType="ClaimType" ElementId="city" TargetCollection="Restriction">
          <Item Text="Berlina" Value="Berlin"></Item>
          <Item Text="Londres" Value="London" SelectByDefault="true"></Item>
          <Item Text="Seattle" Value="Seattle"></Item>
        </LocalizedCollection>
      </LocalizedCollections>
    </LocalizedResources>
  </Localization>
<!-- 
</BuildingBlocks>-->

Nadat u het lokalisatie-element hebt toevoegen, bewerkt u de inhoudsdefinitie met de lokalisatie. In het volgende voorbeeld worden aangepaste gelokaliseerde resources voor Engels (en) en Spaans (es) toegevoegd aan de aanmeldingspagina:

<!-- 
<BuildingBlocks>
  <ContentDefinitions> -->
   <ContentDefinition Id="api.localaccountsignup">
    <LocalizedResourcesReferences MergeBehavior="Prepend">
        <LocalizedResourcesReference Language="en" LocalizedResourcesReferenceId="api.localaccountsignup.en" />
        <LocalizedResourcesReference Language="es" LocalizedResourcesReferenceId="api.localaccountsignup.es" />
    </LocalizedResourcesReferences>
   </ContentDefinition>
  <!-- 
  </ContentDefinitions>
</BuildingBlocks>-->

Volgende stappen