Freigeben über


Hinzufügen von Benutzerattributen und Anpassen von Benutzereingaben in Azure Active Directory B2C

Von Bedeutung

Ab dem 1. Mai 2025 steht Azure AD B2C nicht mehr für neue Kunden zur Verfügung. Weitere Informationen finden Sie in unseren HÄUFIG gestellten Fragen.

Bevor Sie beginnen, verwenden Sie die Auswahl eines Richtlinientyps oben auf dieser Seite, um den Typ der Richtlinie auszuwählen, die Sie einrichten. Azure Active Directory B2C bietet zwei Methoden zum Definieren der Benutzerinteraktion mit Ihren Anwendungen: vordefinierte Benutzerflows oder vollständig konfigurierbare benutzerdefinierte Richtlinien. Die Schritte, die in diesem Artikel erforderlich sind, unterscheiden sich für jede Methode.

In diesem Artikel sammeln Sie während Ihrer Registrierungsreise in Azure Active Directory B2C (Azure AD B2C) ein neues Attribut, z. B. Stadt. Sie erhalten die Stadt der Benutzer, konfigurieren sie als Dropdown und definieren, ob sie bereitgestellt werden muss.

Von Bedeutung

In diesem Beispiel wird das integrierte Attribut "Stadt" verwendet. Stattdessen können Sie eines der unterstützten integrierten Azure AD B2C-Attribute oder ein benutzerdefiniertes Attribut auswählen. Um ein benutzerdefiniertes Attribut zu verwenden, aktivieren Sie benutzerdefinierte Attribute. Um ein anderes integriertes oder benutzerdefiniertes Attribut zu verwenden, ersetzen Sie "city" durch das Attribut Ihrer Wahl, z. B. das integrierte Attribut "jobTitle " oder ein benutzerdefiniertes Attribut wie extension_loyaltyId.

Voraussetzungen

Benutzerattribute zum Benutzerfluss hinzufügen

  1. Melden Sie sich beim Azure-Portal an.
  2. Wenn Sie Zugriff auf mehrere Mandanten haben, wählen Sie das Symbol Einstellungen im Menü oben aus, um über das Menü Verzeichnisse + Abonnements zu Ihrem Azure AD B2C-Mandanten zu wechseln.
  3. Wählen Sie unter Azure-DiensteAzure AD B2C aus. Oder verwenden Sie das Suchfeld, um Azure AD B2C zu suchen und auszuwählen.
  4. Wählen Sie in Ihrem Azure AD B2C-Mandanten Benutzerflüsse aus.
  5. Wählen Sie eine Richtlinie aus (z. B. „B2C_1_SignupSignin“), um sie zu öffnen.
  6. Wählen Sie Benutzerattribute aus, und wählen Sie dann das Benutzerattribute aus (z. B. "Ort").
  7. Wählen Sie Speichern aus.

Bereitstellen optionaler Ansprüche für Ihre App

Die Anwendungsansprüche sind Werte, die an die Anwendung zurückgegeben werden. Aktualisieren Sie den Benutzerflow, sodass dieser die gewünschten Ansprüche enthält:

  1. Wählen Sie eine Richtlinie aus (z. B. „B2C_1_SignupSignin“), um sie zu öffnen.
  2. Wählen Sie "Anwendungsansprüche" aus.
  3. Wählen Sie Attribute aus, die Sie zurück an Ihre Anwendung senden möchten (z. B. "Ort").
  4. Wählen Sie Speichern aus.

Konfigurieren des Eingabetyps für Benutzerattribute

  1. Wählen Sie eine Richtlinie aus (z. B. „B2C_1_SignupSignin“), um sie zu öffnen.

  2. Wählen Sie "Seitenlayouts" aus.

  3. Wählen Sie die Anmeldeseite für lokale Konten aus.

  4. Wählen Sie unter "Benutzerattribute" "Ort" aus.

    1. Wählen Sie in der Dropdownliste "Optional " die Option "Nein" aus.
    2. Wählen Sie im Eingabetyp "Benutzer" den aktuellen Benutzereingabetyp aus, z. B. "TextBox", um einen Fensterbereich des Benutzereingabetyp-Editors zu öffnen.
    3. Wählen Sie in der Dropdownliste " Benutzereingabetyp " die Option "DropdownSingleSelect" aus.
    4. Geben Sie im Text und den Werten die Text- und Wertpaare ein, aus denen Ihre Antworten für das Attribut bestehen. Der Text wird in der Weboberfläche für Ihren Fluss angezeigt, und die Werte werden für den ausgewählten Text in Azure AD B2C gespeichert. Optional: Verwenden Sie die Schaltflächen "Nach oben/unten", um Dropdownelemente neu anzuordnen.
  5. Wählen Sie "OK" aus. Optional: Verwenden Sie die Schaltflächen "Nach oben/unten", um Benutzerattribute auf der Registrierungsseite neu anzuordnen.

  6. Wählen Sie Speichern aus.

    Webseite ruft grüne API auf.

Bereitstellen einer Liste von Werten mithilfe lokalisierter Auflistungen

So stellen Sie eine festgelegte Liste von Werten für das Stadt-Attribut bereit:

  1. Aktivieren der Sprachanpassung für den Benutzerablauf
  2. Wählen Sie eine Richtlinie aus (z. B. „B2C_1_SignupSignin“), um sie zu öffnen.
  3. Wählen Sie auf der Seite "Sprachen " für den Benutzerablauf die Sprache aus, die Sie anpassen möchten.
  4. Wählen Sie unter Ressourcendateien auf Seitenebene die Seite "Lokales Konto registrieren" aus.
  5. Wählen Sie "Standardwerte herunterladen" (oder "Außerkraftsetzungen herunterladen" , wenn Sie diese Sprache zuvor bearbeitet haben).
  6. Erstellen Sie ein LocalizedCollections Attribut.

Dies LocalizedCollections ist ein Array von Name und Value Paaren. Die Reihenfolge für die Artikel ist die Reihenfolge, in der sie angezeigt werden.

  • ElementId ist das Benutzerattribut, für das dieses Attribut vom Typ LocalizedCollections eine Antwort darstellt.
  • Name ist der Wert, der dem Benutzer angezeigt wird.
  • Value wird im Anspruch zurückgegeben, wenn diese Option ausgewählt wird.
{
  "LocalizedStrings": [...],
  "LocalizedCollections": [
    {
      "ElementType": "ClaimType",
      "ElementId": "city",
      "TargetCollection": "Restriction",
      "Override": true,
      "Items": [
        {
          "Name": "Berlin",
          "Value": "Berlin"
        },
        {
          "Name": "London",
          "Value": "London"
        },
        {
          "Name": "Seattle",
          "Value": "Seattle"
        }
      ]
    }
  ]
}

Hochladen von Änderungen

  1. Nachdem Sie die Änderungen an Ihrer JSON-Datei abgeschlossen haben, kehren Sie zu Ihrem B2C-Mandanten zurück.
  2. Wählen Sie Benutzerflows und dann die Richtlinie aus (z. B. „B2C_1_SignupSignin“), um sie zu öffnen.
  3. Wählen Sie "Sprachen" aus.
  4. Wählen Sie die gewünschte Zielsprache für die Übersetzung aus.
  5. Wählen Sie unter "Ressourcendateien auf Seitenebene" die Seite "Lokales Konto registrieren" aus.
  6. Klicken Sie auf das Ordnersymbol, und wählen Sie die hochzuladende JSON-Datei aus. Die Änderungen werden automatisch in Ihrem Benutzerflow gespeichert.

Testen des Benutzerablaufs

  1. Wählen Sie eine Richtlinie aus (z. B. „B2C_1_SignupSignin“), um sie zu öffnen.
  2. Um Ihre Richtlinie zu testen, wählen Sie "Benutzerablauf ausführen" aus.
  3. Wählen Sie für "Anwendung" die Webanwendung mit dem Namen "testapp1" aus, die Sie zuvor registriert haben. Als Antwort-URL sollte https://jwt.ms angezeigt werden.
  4. Wählen Sie "Benutzerablauf ausführen" aus.

Überblick

Sie können die anfänglichen Daten von Ihren Benutzenden mithilfe der User Journey für die Registrierung bzw. Anmeldung sammeln. Sie können später mithilfe einer User Journey für die Profilbearbeitung weitere Ansprüche sammeln. Wenn Azure AD B2C Informationen direkt vom Benutzer interaktiv sammelt, verwendet es das selbstbehauptete technische Profil. In diesem Beispiel führen Sie folgende Schritte aus:

  1. Definieren Sie einen "Stadt"-Anspruch.
  2. Bitten Sie den Benutzer um seine Stadt.
  3. Sie speichern den Ort dauerhaft im Benutzerprofil im Azure AD B2C-Verzeichnis.
  4. Sie lesen bei jeder Anmeldung den Anspruch „Ort“ aus dem Azure AD B2C-Verzeichnis.
  5. Sie geben nach der Anmeldung oder Registrierung den Ort an die Anwendung der vertrauenden Seite zurück.

Definieren eines Anspruchs

Ein Claim stellt eine temporäre Speicherung von Daten während der Ausführung einer Azure AD B2C-Richtlinie bereit. Das Anspruchsschema ist der Ort, an dem Sie Ihre Ansprüche deklarieren. Die folgenden Elemente werden verwendet, um den Anspruch zu definieren:

  • DisplayName – Eine Zeichenfolge, die die benutzerdefinierte Bezeichnung definiert.
  • Datentyp – Der Typ des Anspruchs.
  • UserHelpText – Hilft dem Benutzer zu verstehen, was erforderlich ist.
  • UserInputType – Der Typ des Eingabesteuerelements, z. B. Textfeld, Optionsfeld, Dropdownliste oder Mehrfachauswahl.

Öffnen Sie die Erweiterungsdatei Ihrer Richtlinie. Beispiel: SocialAndLocalAccounts/TrustFrameworkExtensions.xml.

  1. Suchen Sie nach dem BuildingBlocks-Element . Wenn das Element nicht vorhanden ist, fügen Sie es hinzu.
  2. Suchen Sie das ClaimsSchema-Element . Wenn das Element nicht vorhanden ist, fügen Sie es hinzu.
  3. Fügen Sie den Stadtanspruch zum ClaimsSchema-Element hinzu.
<!-- 
<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>-->

Fügen Sie das SelectByDefault-Attribut in ein Enumeration Element ein, damit es beim ersten Laden der Seite standardmäßig ausgewählt wird. Wenn Sie beispielsweise das Element "London " vorab auswählen möchten, ändern Sie das Enumeration Element wie im folgenden Beispiel:

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

Hinzufügen eines Anspruchs zur Benutzeroberfläche

Die folgenden technischen Profile werden selbst bestätigt und aufgerufen, wenn ein Benutzer Eingaben bereitstellen soll:

  • LocalAccountSignUpWithLogonEmail – Lokaler Konto-Registrierungsfluss.
  • SelfAsserted-Social – Verbundkonto beim erstmaligen Anmelden des Benutzers.
  • SelfAsserted-ProfileUpdate – Profilfluss bearbeiten.

Um den Anspruch „city“ bei der Registrierung zu sammeln, muss er dem technischen Profil LocalAccountSignUpWithLogonEmail als Ausgabeanspruch hinzugefügt werden. Überschreiben Sie dieses technische Profil in der Erweiterungsdatei. Geben Sie die gesamte Liste der Ausgabeansprüche an, um die Reihenfolge zu steuern, in der die Ansprüche auf dem Bildschirm angezeigt werden. Suchen Sie das ClaimsProviders-Element . Fügen Sie ein neues ClaimsProvider-Element wie folgt hinzu:

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

Zum Sammeln des Anspruchs „city“ nach der erstmaligen Anmeldung mit einem Verbundkonto muss er dem technischen Profil SelfAsserted-Social als Ausgabeanspruch hinzugefügt werden. Damit Benutzende von lokalen Konten und Verbundkonten ihre Profildaten später bearbeiten können, fügen Sie den Eingabe- und Ausgabeanspruch dem technischen Profil SelfAsserted-ProfileUpdate hinzu. Überschreiben Sie diese technischen Profile in der Erweiterungsdatei. Geben Sie die gesamte Liste der Ausgabeansprüche an, um die Reihenfolge zu steuern, in der die Ansprüche auf dem Bildschirm angezeigt werden. Suchen Sie das ClaimsProviders-Element . Fügen Sie ein neues ClaimsProvider-Element wie folgt hinzu:

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

Lesen und Schreiben eines Anspruchs

Die folgenden technischen Profile sind technische Active Directory-Profile, die Daten in Microsoft Entra ID lesen und schreiben.
Zum Schreiben von Daten in das Benutzerprofil verwenden Sie PersistedClaims und zum Lesen von Daten aus dem Benutzerprofil verwenden Sie OutputClaims innerhalb der jeweiligen technischen Active Directory-Profile.

Überschreiben Sie diese technischen Profile in der Erweiterungsdatei. Suchen Sie das ClaimsProviders-Element . Fügen Sie ein neues ClaimsProvider-Element wie folgt hinzu:

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

Einschließen eines Anspruchs in das Token

Um den Anspruch „city“ an die Anwendung der vertrauenden Seite zurückzugeben, fügen Sie der Datei SocialAndLocalAccounts/SignUpOrSignIn.xml einen Ausgabeanspruch hinzu. Der Ausgabeanspruch wird nach einer erfolgreichen User Journey in das Token eingefügt und an die Anwendung gesendet. Ändern Sie im Abschnitt für die vertrauende Seite das Element des technischen Profils, um den Ort als Ausgabeanspruch hinzuzufügen.

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

Hochladen und Testen der aktualisierten benutzerdefinierten Richtlinie

  1. Wenn Sie Zugriff auf mehrere Mandanten haben, wählen Sie das Symbol Einstellungen im Menü oben aus, um über das Menü Verzeichnisse + Abonnements zu Ihrem Azure AD B2C-Mandanten zu wechseln.
  2. Suchen Sie nach Azure AD B2C, und wählen Sie es aus.
  3. Wählen Sie unter "Richtlinien" die Option "Identity Experience Framework" aus.
  4. Wählen Sie "Benutzerdefinierte Richtlinie hochladen" aus.
  5. Laden Sie die zuvor geänderten Richtliniendateien hoch.

Testen der benutzerdefinierten Richtlinie

  1. Wählen Sie die Richtliniendatei für die vertrauende Seite aus, z. B. B2C_1A_signup_signin.
  2. Wählen Sie für "Anwendung" eine Webanwendung aus, die Sie zuvor registriert haben. Als Antwort-URL sollte https://jwt.ms angezeigt werden.
  3. Wählen Sie die Schaltfläche " Jetzt ausführen " aus.
  4. Wählen Sie auf der Seite zur Anmeldung oder Registrierung "Jetzt registrieren" aus, um sich anzumelden. Geben Sie die Benutzerinformationen einschließlich des Ortsnamens ein, und wählen Sie dann "Erstellen" aus. Der Inhalt des zurückgegebenen Tokens sollte angezeigt werden.

Der Anmeldebildschirm sollte ähnlich wie der folgende Screenshot aussehen:

Screenshot der Geänderten Registrierungsoption

Das an Ihre Anwendung zurückgesendete Token enthält den city Claim.

{
  "typ": "JWT",
  "alg": "RS256",
  "kid": "X5eXk4xyojNFum1kl2Ytv8dlNP4-c57dO6QGTVBwaNk"
}.{
  "exp": 1583500140,
  "nbf": 1583496540,
  "ver": "1.0",
  "iss": "https://contoso.b2clogin.com/aaaabbbb-0000-cccc-1111-dddd2222eeee/v2.0/",
  "aud": "00001111-aaaa-2222-bbbb-3333cccc4444",
  "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"
  ...
}

[Optional] Lokalisieren der Benutzeroberfläche

Azure AD B2C ermöglicht Es Ihnen, Ihre Richtlinie in verschiedene Sprachen aufzunehmen. Weitere Informationen finden Sie unter Sprachanpassung in Azure Active Directory B2C. Um die Registrierungsseite zu lokalisieren, richten Sie die Liste der unterstützten Sprachen ein und stellen sprachspezifische Bezeichnungen bereit.

Hinweis

Wenn Sie LocalizedCollection mit den sprachspezifischen Bezeichnungen verwenden, können Sie die Restriction-Sammlung aus der Anspruchsdefinition entfernen.

Im folgenden Beispiel wird veranschaulicht, wie Die Liste der Städte für Englisch und Spanisch bereitgestellt wird. Beide legen die Restriction-Sammlung des Anspruchs city auf eine Liste von Elementen für Englisch und Spanisch fest. SelectByDefault macht ein Element standardmäßig ausgewählt, wenn die Seite zum ersten Mal geladen wird.

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

Nachdem Sie das Lokalisierungselement hinzugefügt haben, bearbeiten Sie die Inhaltsdefinition mit der Lokalisierung. Im folgenden Beispiel werden der Registrierungsseite die benutzerdefinierten lokalisierten Ressourcen Englisch (en) und Spanisch (es) hinzugefügt:

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

Nächste Schritte