Gebruikerskenmerken toevoegen en gebruikersinvoer aanpassen in Azure Active Directory B2C

Voordat u begint, gebruikt u de selector Een beleidstype kiezen om het type beleid te kiezen dat u instelt. U kunt in Azure Active Directory B2C op twee manieren definiëren hoe gebruikers met uw toepassingen communiceren: via vooraf gedefinieerde gebruikersstromen of via 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 registratietraject in Azure Active Directory B2C (Azure AD B2C). U verkrijgt de woonplaats van de gebruikers, configureert deze als een vervolgkeuzelijst en definieert of deze moet worden opgegeven.

Belangrijk

In dit voorbeeld wordt de ingebouwde claim 'woonplaats' gebruikt. In plaats daarvan kunt u een van de ondersteunde ingebouwde Azure AD B2C-kenmerken of een aangepast kenmerk kiezen. Als u een aangepast kenmerk wilt gebruiken, schakelt u aangepaste kenmerken in. Als u een ander ingebouwd of aangepast kenmerk wilt gebruiken, vervangt u 'woonplaats' 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. Meld u aan bij de Azure-portal.
  2. Als u toegang hebt tot meerdere tenants, selecteert u het pictogram Instellingen in het bovenste menu om over te schakelen naar uw Azure AD B2C-tenant in het menu Mappen en abonnementen.
  3. Selecteer onder Azure-services de optie Azure AD B2C. Of gebruik het zoekvak om naar Azure AD B2C te gaan en dat te selecteren.
  4. Selecteer Gebruikersstromen in uw Azure AD B2C-tenant.
  5. Selecteer uw beleid (bijvoorbeeld 'B2C_1_SignupSignin') om het te openen.
  6. Selecteer Gebruikerskenmerken en vervolgens het gebruikerskenmerk (bijvoorbeeld 'Woonplaats').
  7. Selecteer Opslaan.

Optionele claims in uw app opnemen

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

  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 'Woonplaats').
  4. Selecteer Opslaan.

Invoertype voor de gebruikerskenmerken configureren

  1. Selecteer uw beleid (bijvoorbeeld 'B2C_1_SignupSignin') om het te openen.

  2. Selecteer Pagina-indelingen.

  3. Selecteer Aanmeldingspagina voor lokaal account.

  4. Selecteer Woonplaats onder Gebruikerskenmerken.

    1. Selecteer Nee in de vervolgkeuzelijst Optioneel.
    2. Selecteer in Type gebruikersinvoer het huidige gebruikersinvoertype, zoals Tekstvak, om een venster met de editor voor gebruikersinvoertypen te openen.
    3. Selecteer in de vervolgkeuzelijst Type gebruikersinvoer de optie DropdownSingleSelect.
    4. Voer in Tekst en Waarden de tekst- en waardeparen in die de reeks antwoorden voor het kenmerk vormen. De tekst wordt weergegeven in de webinterface voor uw stroom en de waarden worden opgeslagen in Azure AD B2C voor de geselecteerde tekst. Optioneel: gebruik de knoppen voor omhoog/omlaag verplaatsen om vervolgkeuzelijsten opnieuw te ordenen.
  5. Selecteer Ok. Optioneel: gebruik de knoppen voor omhoog/omlaag verplaatsen om de volgorde van gebruikerskenmerken op de registratiepagina te wijzigen.

  6. Selecteer Opslaan.

    Web page call green API.

Een lijst met waarden opgeven met behulp van gelokaliseerde verzamelingen

Geef een lijst met waarden op voor het kenmerk Woonplaats:

  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 Bronbestanden op paginaniveau de optie Registratiepagina lokaal account.
  5. Selecteer Standaardversies downloaden (of Overschreven versies downloaden als u deze taal eerder hebt bewerkt).
  6. Maak een LocalizedCollections-kenmerk.

De LocalizedCollections is een matrix van Name- en Value-paren. De volgorde voor de items is de volgorde waarin ze worden weergegeven.

  • ElementId is het gebruikerskenmerk waarop dit LocalizedCollections-kenmerk een antwoord is.
  • Name is de waarde die wordt weergegeven voor de gebruiker.
  • Value is wat 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 aangebracht, 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 waarin u wilt vertalen.
  5. Selecteer onder Bronbestanden op paginaniveau de optie Registratiepagina lokaal account.
  6. Selecteer het mappictogram en vervolgens 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 voor 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 in eerste instantie gegevens van uw gebruikers verzamelen met behulp van het gebruikerstraject voor registratie of aanmelding. Aanvullende claims kunnen later worden verzameld met behulp van een gebruikerstraject voor het bewerken van het profiel. Steeds wanneer Azure AD B2C via communicatie met de gebruiker rechtstreeks gegevens verzamelt, wordt gebruikgemaakt van het automatisch opgestelde technische profiel. In dit voorbeeld doet u het volgende:

  1. Definieer een 'Woonplaats'-claim.
  2. Vraag de gebruiker naar zijn of haar woonplaats.
  3. Neem de woonplaats op in het gebruikersprofiel in de Azure AD B2C-directory.
  4. Lees de woonplaatsclaim af uit de Azure AD B2C-directory bij elke aanmelding.
  5. Retourneer de woonplaats naar uw op claims gebaseerde toepassing na de aanmelding of registratie.

Een claim definiëren

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

  • DisplayName: een tekenreeks waarmee het label dat wordt weergegeven voor gebruikers wordt gedefinieerd.
  • DataType: het type claim.
  • UserHelpText: ondersteunt de gebruiker bij wat deze moet doen.
  • UserInputType: het type invoerbesturingselement, zoals tekstvak, keuzerondje, vervolgkeuzelijst of meerdere selecties.

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

  1. Zoek element BuildingBlocks. Als het element niet aanwezig is, voegt u het toe.
  2. Zoek naar het element ClaimsSchema. Als het element niet aanwezig is, voegt u het toe.
  3. Voeg de woonplaatsclaim 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="london" />
        <Enumeration Text="Seattle" Value="seattle" />
      </Restriction>
    </ClaimType>
  <!-- 
  </ClaimsSchema>
</BuildingBlocks>-->

Voeg het kenmerk SelectByDefault toe aan een Enumeration-element, zodat het standaard wordt geselecteerd wanneer de pagina voor het eerst wordt geladen. Als u bijvoorbeeld het item Londen vooraf wilt selecteren, wijzigt u het element Enumeration zoals wordt beschreven in het volgende voorbeeld:

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

Een claim toevoegen aan de gebruikersinterface

De volgende technische profielen worden automatisch aangeroepen wanneer een gebruiker gegevens moet invoeren:

  • LocalAccountSignUpWithLogonEmail: aanmeldingsstroom voor lokaal account.
  • SelfAsserted-Social: eerste gebruikersaanmelding met federatief account.
  • SelfAsserted-ProfileUpdate: stroom voor bewerking van profiel.

Als u de woonplaatsclaim wilt verzamelen tijdens de registratie, moet deze als een uitvoerclaim worden toegevoegd aan het technische profiel voor LocalAccountSignUpWithLogonEmail. Overschrijf dit technische profiel in het uitbreidingsbestand. Geef de volledige lijst met uitvoerclaims op om de volgorde te bepalen waarin de claims op het scherm worden weergegeven. Ga naar 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 woonplaatsclaim wilt verzamelen na de eerste aanmelding met een federatief account, moet deze worden toegevoegd als uitvoerclaim aan het technische profiel voor SelfAsserted-Social. Voeg de invoer- en uitvoerclaims toe aan het technische profiel voor SelfAsserted-ProfileUpdate, zodat gebruikers van lokale en federatieve accounts hun profielgegevens later kunnen bewerken. Overschrijf deze technische profielen in het uitbreidingsbestand. Geef de volledige lijst met de uitvoerclaims op om de volgorde te bepalen waarin de claims op het scherm worden weergegeven. Ga naar 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 Active Directory-technische profielen, die gegevens lezen en schrijven naar Microsoft Entra-id.
Gebruik PersistedClaims om gegevens naar het gebruikersprofiel te schrijven en OutputClaims om gegevens te lezen uit het gebruikersprofiel in de desbetreffende technische profielen van Active Directory.

Overschrijf deze technische profielen in het uitbreidingsbestand. Ga naar 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 woonplaatsclaim wilt retourneren naar de op claims gebaseerde toepassing, voegt u een uitvoerclaim toe aan het SocialAndLocalAccounts/SignUpOrSignIn.xml-bestand. De uitvoerclaim wordt toegevoegd aan het token na een voltooid gebruikerstraject en wordt naar de toepassing verzonden. Wijzig het element van het technische profiel in de sectie Relying Party om de woonplaats toe te voegen als een 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. Als u toegang hebt tot meerdere tenants, selecteert u het pictogram Instellingen in het bovenste menu om over te schakelen naar uw Azure AD B2C-tenant in het menu Mappen en abonnementen.
  2. Zoek Azure AD B2C en selecteer deze.
  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 voor Toepassing een webtoepassing die u eerder hebt geregistreerd. De antwoord-URL moet https://jwt.ms weergeven.
  3. Selecteer de knop Nu uitvoeren.
  4. Selecteer Nu registreren op de registratie- of aanmeldingspagina om u te registreren. Voer de gebruikersgegevens in, waaronder de naam van de woonplaats, en klik vervolgens op Maken. De inhoud van het geretourneerde token wordt nu weergegeven.

Het registratiescherm moet er ongeveer uitzien als in de volgende schermopname:

Screenshot of modified sign-up option

Het token dat naar uw toepassing wordt geretourneerd, 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

In Azure AD B2C kunt u voor het beleid verschillende talen toepassen. Lees meer over het aanpassen van de taaltoepassing voor meer informatie. Als u de registratiepagina wilt lokaliseren, stelt u de lijst met ondersteunde talen in en geeft u taalspecifieke labels op.

Notitie

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

In het volgende voorbeeld ziet u hoe u de lijst met woonplaatsen kunt opgeven voor Engels en Spaans. Met beide wordt de Restriction-verzameling van de claim woonplaats ingesteld met een lijst van 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 toegevoegd, bewerkt u de inhoudsdefinitie met de lokalisatie. In het volgende voorbeeld worden aangepaste gelokaliseerde resources voor Engels (en) en Spaans (es) toegevoegd aan de registratiepagina:

<!-- 
<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