Sdílet prostřednictvím


Přidání atributů uživatele a přizpůsobení uživatelského vstupu v Azure Active Directory B2C

Než začnete, pomocí selektoru Zvolit typ zásady zvolte typ zásady, kterou nastavujete. Azure Active Directory B2C nabízí dvě metody pro definování způsobu interakce uživatelů s vašimi aplikacemi: prostřednictvím předdefinovaných toků uživatelů nebo prostřednictvím plně konfigurovatelných vlastních zásad. Kroky vyžadované v tomto článku se pro každou metodu liší.

V tomto článku shromáždíte během registrace nový atribut v Azure Active Directory B2C (Azure AD B2C). Získáte město uživatelů, nakonfigurujete ho jako rozevírací seznam a definujete, jestli se vyžaduje zadání.

Důležité

Tato ukázka používá integrovanou deklaraci identity city. Místo toho můžete zvolit některý z podporovaných předdefinovaných atributů Azure AD B2C nebo vlastního atributu. Pokud chcete použít vlastní atribut, povolte vlastní atributy. Pokud chcete použít jiný předdefinovaný nebo vlastní atribut, nahraďte "city" atributem podle vašeho výběru, například předdefinovaný atribut jobTitle nebo vlastní atribut, jako je extension_loyaltyId.

Předpoklady

Přidání atributů uživatele do toku uživatele

  1. Přihlaste se k portálu Azure.
  2. Pokud máte přístup k více tenantům, v horní nabídce vyberte ikonu Nastavení a v nabídce Adresáře a předplatná přepněte do svého tenanta Azure AD B2C.
  3. V části Služby Azure vyberte Azure AD B2C. Nebo pomocí vyhledávacího pole vyhledejte a vyberte Azure AD B2C.
  4. V tenantovi Azure AD B2C vyberte Toky uživatelů.
  5. Vyberte zásadu (například "B2C_1_SignupSignin") a otevřete ji.
  6. Vyberte Atributy uživatele a pak vyberte atribut uživatele (například Město).
  7. Zvolte Uložit.

Zadání volitelných deklarací identity do aplikace

Deklarace identity aplikace jsou hodnoty, které se vrátí do aplikace. Aktualizujte tok uživatele tak, aby obsahoval požadované deklarace identity.

  1. Vyberte zásadu (například "B2C_1_SignupSignin") a otevřete ji.
  2. Vyberte Deklarace identit aplikace.
  3. Vyberte atributy, které chcete odeslat zpět do aplikace (například Město)..
  4. Zvolte Uložit.

Konfigurace vstupního typu atributů uživatele

  1. Vyberte zásadu (například "B2C_1_SignupSignin") a otevřete ji.

  2. Vyberte rozložení stránky.

  3. Vyberte přihlašovací stránku místního účtu.

  4. V části Atributy uživatele vyberte Město.

    1. V rozevíracím seznamu Volitelné vyberte Ne.
    2. V poli Typ vstupu uživatele vyberte aktuální typ vstupu uživatele, například Textové pole, a otevřete tak podokno editoru typů uživatelských vstupů.
    3. V rozevíracím seznamu Typ vstupu uživatele vyberte Rozevírací seznamSingleSelect.
    4. Do pole Text a Hodnoty zadejte páry textu a hodnoty, které tvoří vaši sadu odpovědí pro atribut. Text se zobrazí ve webovém rozhraní pro váš tok a hodnoty se uloží do Azure AD B2C pro vybraný text. Volitelné: Pomocí tlačítek Přesunout nahoru nebo dolů můžete změnit pořadí rozevíracích položek.
  5. Vyberte OK. Volitelné: Pomocí tlačítek "Přesunout nahoru/dolů" můžete změnit pořadí atributů uživatele na registrační stránce.

  6. Zvolte Uložit.

    Web page call green API.

Poskytnutí seznamu hodnot pomocí lokalizovaných kolekcí

Zadání seznamu hodnot pro atribut město:

  1. Povolení přizpůsobení jazyka v toku uživatele
  2. Vyberte zásadu (například "B2C_1_SignupSignin") a otevřete ji.
  3. Na stránce Jazyky pro tok uživatele vyberte jazyk, který chcete přizpůsobit.
  4. V části Soubory prostředků na úrovni stránky vyberte registrační stránku místního účtu.
  5. Pokud jste tento jazyk upravili dříve, vyberte Možnost Stáhnout výchozí hodnoty (nebo Stáhnout přepsání ).
  6. Vytvořte LocalizedCollections atribut.

Jedná se LocalizedCollections o matici Name a Value párů. Pořadí položek bude pořadí, ve kterém jsou zobrazeny.

  • ElementId je atribut uživatele, na který tento LocalizedCollections atribut odpovídá.
  • Name je hodnota, která se uživateli zobrazí.
  • Value je to, co se vrátí v deklaraci identity při výběru této možnosti.
{
  "LocalizedStrings": [...],
  "LocalizedCollections": [
    {
      "ElementType": "ClaimType",
      "ElementId": "city",
      "TargetCollection": "Restriction",
      "Override": true,
      "Items": [
        {
          "Name": "Berlin",
          "Value": "Berlin"
        },
        {
          "Name": "London",
          "Value": "London"
        },
        {
          "Name": "Seattle",
          "Value": "Seattle"
        }
      ]
    }
  ]
}

Nahrání změn

  1. Po dokončení změn v souboru JSON se vraťte do tenanta B2C.
  2. Vyberte Toky uživatelů a vyberte zásady (například "B2C_1_SignupSignin") a otevřete ji.
  3. Vyberte jazyky.
  4. Vyberte jazyk, na který chcete přeložit.
  5. V části Soubory prostředků na úrovni stránky vyberte registrační stránku místního účtu.
  6. Vyberte ikonu složky a vyberte soubor JSON, který chcete nahrát. Změny se automaticky uloží do toku uživatele.

Testování toku uživatele

  1. Vyberte zásadu (například "B2C_1_SignupSignin") a otevřete ji.
  2. Pokud chcete zásady otestovat, vyberte Spustit tok uživatele.
  3. V části Aplikace vyberte webovou aplikaci s názvem testapp1 , kterou jste předtím zaregistrovali. Adresa URL odpovědi by se měla zobrazit https://jwt.ms.
  4. Klikněte na Spustit tok uživatele.

Přehled

Počáteční data od uživatelů můžete shromažďovat pomocí cesty k registraci nebo přihlášení uživatele. Další deklarace identity je možné shromáždit později pomocí cesty uživatele pro úpravu profilu. Kdykoli Azure AD B2C shromažďuje informace přímo od uživatele interaktivně, používá samoobslužný technický profil. V této ukázce:

  1. Definujte deklaraci identity "město".
  2. Požádejte uživatele o své město.
  3. Zachovají město do profilu uživatele v adresáři Azure AD B2C.
  4. Při každém přihlášení si přečtěte deklaraci města z adresáře Azure AD B2C.
  5. Po přihlášení nebo registraci vraťte město do aplikace předávající strany.

Definování deklarace identity

Deklarace identity poskytuje dočasné úložiště dat během provádění zásad Azure AD B2C. Schéma deklarací identity je místem, kde deklarujete deklarace identity. K definování deklarace identity se používají následující prvky:

  • DisplayName – řetězec, který definuje popisek určený uživatelem.
  • Datový typ – typ deklarace identity.
  • UserHelpText – pomáhá uživateli pochopit, co je potřeba.
  • UserInputType – typ ovládacího prvku zadávání, například textové pole, výběr rádia, rozevírací seznam nebo více výběrů.

Otevřete soubor s příponami zásad. Například, SocialAndLocalAccounts/TrustFrameworkExtensions.xml.

  1. Vyhledejte element BuildingBlocks . Pokud prvek neexistuje, přidejte ho.
  2. Vyhledejte element ClaimsSchema . Pokud prvek neexistuje, přidejte ho.
  3. Přidejte deklaraci města do elementu 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>-->

Při prvním načtení stránky zahrňte atribut SelectByDefault do Enumeration elementu, aby byl ve výchozím nastavení vybrán. Pokud například chcete položku Londýna předem vybrat, změňte Enumeration prvek jako následující příklad:

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

Přidání deklarace identity do uživatelského rozhraní

Následující technické profily jsou self-asserted, vyvolány, když se očekává, že uživatel zadá vstup:

  • LocalAccountSignUpWithLogonEmail – tok registrace místního účtu.
  • SelfAsserted-Social – Federovaný účet při prvním přihlášení uživatele
  • SelfAsserted-ProfileUpdate – Upravit tok profilu

Pokud chcete během registrace shromáždit deklaraci města, musíte ji přidat jako výstupní deklaraci identity do technického LocalAccountSignUpWithLogonEmail profilu. Přepište tento technický profil v souboru s příponou. Zadejte celý seznam výstupních deklarací identity pro řízení pořadí, ve kterém se deklarace identity zobrazují na obrazovce. Vyhledejte element ClaimsProviders . Přidejte nové ClaimsProviders následujícím způsobem:

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

Pokud chcete po počátečním přihlášení pomocí federovaného účtu shromáždit deklaraci identity města, musíte ji přidat jako výstupní deklaraci identity do technického SelfAsserted-Social profilu. Aby uživatelé místního a federovaného účtu mohli později upravovat data profilu, přidejte do technického SelfAsserted-ProfileUpdate profilu vstupní a výstupní deklarace identity. Přepište tyto technické profily v souboru s příponou. Zadejte celý seznam výstupních deklarací identity pro řízení pořadí, ve kterém se deklarace identity zobrazují na obrazovce. Vyhledejte element ClaimsProviders . Přidejte nové ClaimsProviders následujícím způsobem:

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

Čtení a zápis deklarace identity

Následující technické profily jsou technické profily služby Active Directory, které čtou a zapisují data do Microsoft Entra ID.
Slouží PersistedClaims k zápisu dat do profilu uživatele a OutputClaims ke čtení dat z profilu uživatele v příslušných technických profilech služby Active Directory.

Přepište tyto technické profily v souboru s příponou. Vyhledejte element ClaimsProviders . Přidejte nové ClaimsProviders následujícím způsobem:

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

Zahrnutí deklarace identity do tokenu

Pokud chcete vrátit deklaraci města zpět do aplikace předávající strany, přidejte do SocialAndLocalAccounts/SignUpOrSignIn.xml souboru výstupní deklaraci identity. Výstupní deklarace identity se přidá do tokenu po úspěšné cestě uživatele a odešle se do aplikace. Upravte prvek technického profilu v části předávající strany tak, aby se město přidalo jako výstupní deklarace identity.

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

Nahrání a otestování aktualizovaných vlastních zásad

  1. Pokud máte přístup k více tenantům, v horní nabídce vyberte ikonu Nastavení a v nabídce Adresáře a předplatná přepněte do svého tenanta Azure AD B2C.
  2. Vyhledejte a vyberte Azure AD B2C.
  3. V části Zásady vyberte Architekturu prostředí identit.
  4. Vyberte Nahrát vlastní zásady.
  5. Nahrajte soubory zásad, které jste předtím změnili.

Testování vlastních zásad

  1. Vyberte například zásadu B2C_1A_signup_signinpředávající strany.
  2. V části Aplikace vyberte webovou aplikaci, kterou jste předtím zaregistrovali. Adresa URL odpovědi by se měla zobrazit https://jwt.ms.
  3. Vyberte tlačítko Spustit hned.
  4. Na registrační nebo přihlašovací stránce vyberte Zaregistrovat se. Dokončete zadávání informací o uživateli včetně názvu města a klikněte na tlačítko Vytvořit. Měl by se zobrazit obsah vráceného tokenu.

Obrazovka registrace by měla vypadat podobně jako na následujícím snímku obrazovky:

Screenshot of modified sign-up option

Token odeslaný zpět do vaší aplikace obsahuje city deklaraci identity.

{
  "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"
  ...
}

[Volitelné] Lokalizace uživatelského rozhraní

Azure AD B2C umožňuje přizpůsobit zásady různým jazykům. Další informace najdete v tématu přizpůsobení jazyka. Pokud chcete lokalizovat registrační stránku, nastavte seznam podporovaných jazyků a zadejte popisky specifické pro konkrétní jazyk.

Poznámka:

Při použití LocalizedCollection popisků specifických pro jazyk můžete kolekci z definice deklarace identity odebratRestriction.

Následující příklad ukazuje, jak poskytnout seznam měst pro angličtinu a španělštinu. Obě nastaví Restriction kolekci města deklarace identity se seznamem položek pro angličtinu a španělštinu. Při prvním načtení stránky se při prvním načtení stránky vybere položka SelectByDefault .

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

Po přidání lokalizačního prvku upravte definici obsahu lokalizací. V následujícím příkladu se na registrační stránku přidají vlastní lokalizované prostředky pro angličtinu (en) a španělštinu (es):

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

Další kroky