Compartir a través de


Adición de atributos de usuario y personalización de la entrada de usuario en Azure Active Directory B2C

Importante

A partir del 1 de mayo de 2025, Azure AD B2C ya no estará disponible para ser adquirido por nuevos clientes. Obtenga más información en nuestras preguntas más frecuentes.

Antes de empezar, use el selector Elegir un tipo de directiva en la parte superior de esta página para elegir el tipo de directiva que está configurando. Azure Active Directory B2C ofrece dos métodos para definir cómo interactúan los usuarios con las aplicaciones: a través de flujos de usuario predefinidos o mediante directivas personalizadas totalmente configurables. Los pasos necesarios en este artículo son diferentes para cada método.

En este artículo, recopilará un nuevo atributo, como la ciudad, durante el proceso de registro en Azure Active Directory B2C (Azure AD B2C). Obtiene la ciudad de los usuarios, la configura como una lista desplegable y define si es necesario proporcionarla.

Importante

En este ejemplo se usa una notificación "city" integrada. En su lugar, puede elegir uno de los atributos integrados de Azure AD B2C compatibles o un atributo personalizado. Para usar un atributo personalizado, habilite los atributos personalizados. Para usar un atributo personalizado o integrado diferente, reemplace "city" por el atributo que prefiera, por ejemplo, el atributo integrado jobTitle o un atributo personalizado como extension_loyaltyId.

Prerrequisitos

Adición de atributos de usuario al flujo de usuario

  1. Inicie sesión en Azure Portal.
  2. Si tiene acceso a varios inquilinos, seleccione el icono Configuración en el menú superior para cambiar a su inquilino de Azure AD B2C desde el menú Directorios y suscripciones.
  3. En Servicios de Azure, seleccione Azure AD B2C. O bien, use el cuadro de búsqueda para buscar y seleccionar Azure AD B2C.
  4. En el inquilino de Azure AD B2C, seleccione Flujos de usuario.
  5. Haga clic en la directiva (por ejemplo, "B2C_1_SignupSignin") para abrirla.
  6. Seleccione Atributos de usuario y, a continuación, seleccione el atributo de usuario (por ejemplo, "Ciudad").
  7. Haga clic en Guardar.

Proporcionar reclamaciones opcionales a tu aplicación

Las notificaciones de aplicación son valores que se devuelven a la aplicación. Actualice el flujo de usuario para que contenga las declaraciones deseadas.

  1. Haga clic en la directiva (por ejemplo, "B2C_1_SignupSignin") para abrirla.
  2. Seleccione Notificaciones de aplicación.
  3. Seleccione los atributos que desea devolver a la aplicación (por ejemplo, "Ciudad").
  4. Haga clic en Guardar.

Configuración del tipo de entrada de atributos de usuario

  1. Haga clic en la directiva (por ejemplo, "B2C_1_SignupSignin") para abrirla.

  2. Seleccione Diseños de página.

  3. Seleccione La página de registro de la cuenta local.

  4. En Atributos de usuario, seleccione Ciudad.

    1. En la lista desplegable Opcional , seleccione No.
    2. En el tipo de entrada de usuario, seleccione el tipo de entrada actual de usuario, como TextBox, para abrir un panel del editor de tipo de entrada de usuario.
    3. En la lista desplegable Tipo de entrada del usuario, seleccione DropdownSingleSelect.
    4. En Texto y Valores, escriba los pares de texto y valor que componen su conjunto de respuestas para el atributo. El texto se muestra en la interfaz web del flujo y los valores se almacenan en Azure AD B2C para texto seleccionado. Opcional: use los botones "Subir o bajar" para reordenar los elementos desplegables.
  5. Seleccione Aceptar. Opcional: use los botones "Subir o bajar" para reordenar los atributos de usuario en la página de registro.

  6. Haga clic en Guardar.

    La página web llama a la API verde.

Proporcionar una lista de valores mediante colecciones localizadas

Para proporcionar una lista establecida de valores para el atributo city:

  1. Habilitación de la personalización de idioma en el flujo de usuario
  2. Haga clic en la directiva (por ejemplo, "B2C_1_SignupSignin") para abrirla.
  3. En la página Idiomas del flujo de usuario, seleccione el idioma que desea personalizar.
  4. En Archivos de recursos a nivel de página, seleccione Página de registro de cuenta local.
  5. Seleccione Descargar valores predeterminados (o Descargar invalidaciones si editó anteriormente este idioma).
  6. Cree un LocalizedCollections atributo.

LocalizedCollections es una matriz de pares de Name y Value. El orden de los elementos es el orden en que se muestran.

  • ElementId es el atributo de usuario para el que este atributo LocalizedCollections es una respuesta.
  • Name es el valor que se muestra al usuario.
  • Value es lo que se devuelve en la notificación cuando se selecciona esta opción.
{
  "LocalizedStrings": [...],
  "LocalizedCollections": [
    {
      "ElementType": "ClaimType",
      "ElementId": "city",
      "TargetCollection": "Restriction",
      "Override": true,
      "Items": [
        {
          "Name": "Berlin",
          "Value": "Berlin"
        },
        {
          "Name": "London",
          "Value": "London"
        },
        {
          "Name": "Seattle",
          "Value": "Seattle"
        }
      ]
    }
  ]
}

Carga de los cambios

  1. Una vez completados los cambios en el archivo JSON, vuelva al inquilino B2C.
  2. Haga clic en Flujos de usuario y seleccione la directiva (por ejemplo, "B2C_1_SignupSignin") para abrirla.
  3. Seleccione Idiomas.
  4. Seleccione el idioma al que quiere traducir.
  5. En los archivos de recursos de nivel de página, seleccione la página de registro de cuenta local.
  6. Seleccione el icono de carpeta y el archivo JSON para cargar. Este cambio se guarda en el flujo de usuario automáticamente.

Prueba del flujo de usuario

  1. Haga clic en la directiva (por ejemplo, "B2C_1_SignupSignin") para abrirla.
  2. Para probar la directiva, seleccione Ejecutar flujo de usuario.
  3. En Aplicación, seleccione la aplicación web denominada testapp1 que registró anteriormente. La dirección URL de respuesta debe mostrar https://jwt.ms.
  4. Seleccione Ejecutar flujo de usuario.

Información general

Puede recopilar datos iniciales de los usuarios mediante el proceso de registro o inicio de sesión. Puede recopilar más notificaciones más adelante mediante un recorrido de usuario de edición de perfil. Cada vez que Azure AD B2C recopila información directamente del usuario de forma interactiva, usa el perfil técnico autoafirmado. En este ejemplo:

  1. Defina una reclamación de "ciudad".
  2. Pida al usuario su ciudad.
  3. Conserva la ciudad en el perfil de usuario en el directorio de Azure AD B2C.
  4. Lee la notificación de ciudad en el directorio de Azure AD B2C en cada inicio de sesión.
  5. Devuelve la ciudad a la aplicación de usuario de confianza después de iniciar sesión o registrarse.

Definición de una notificación

Una notificación proporciona un almacenamiento temporal de datos durante la ejecución de una directiva de Azure AD B2C. El esquema de notificaciones es el lugar donde se declaran las notificaciones. Los siguientes elementos se usan para definir la reclamación:

  • DisplayName : cadena que define la etiqueta orientada al usuario.
  • DataType - el tipo de la reclamación.
  • UserHelpText : ayuda al usuario a comprender lo que se necesita.
  • UserInputType : tipo de control de entrada, como cuadro de texto, selección de radio, lista desplegable o varias selecciones.

Abra el archivo de extensiones de su política. Por ejemplo: SocialAndLocalAccounts/TrustFrameworkExtensions.xml.

  1. Busque el elemento BuildingBlocks . Si el elemento no existe, agréguelo.
  2. Busque el elemento ClaimsSchema . Si el elemento no existe, agréguelo.
  3. Agregue el reclamo de ciudad al elemento 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>-->

Incluya el atributo SelectByDefault en un Enumeration elemento para que se seleccione de forma predeterminada cuando se cargue la página por primera vez. Por ejemplo, para seleccionar previamente el elemento de Londres , cambie el Enumeration elemento como en el ejemplo siguiente:

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

Añadir una reclamación a la interfaz de usuario

Los siguientes perfiles técnicos se autoafirman, se invocan cuando se espera que un usuario proporcione entradas:

  • LocalAccountSignUpWithLogonEmail : flujo de registro de cuenta local.
  • SelfAsserted-Social: primer inicio de sesión de un usuario de una cuenta federada.
  • SelfAsserted-ProfileUpdate : editar flujo de perfil.

Para recopilar la notificación de ciudad durante el registro, se debe agregar como notificación de salida al perfil técnico LocalAccountSignUpWithLogonEmail. Invalide este perfil técnico en el archivo de extensión. Especifique toda la lista de notificaciones de salida para controlar el orden en que se presentan las notificaciones en la pantalla. Busque el elemento ClaimsProviders. Agregue un nuevo ClaimsProviders de la siguiente manera:

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

Para recopilar la notificación de ciudad después del inicio de sesión inicial con una cuenta federada, se debe agregar como notificación de salida al perfil técnico SelfAsserted-Social. Para que los usuarios de cuentas locales y federadas puedan editar sus datos de perfil más adelante, agregue los atributos de entrada y salida al SelfAsserted-ProfileUpdate perfil técnico. Invalide estos perfiles técnicos en el archivo de extensión. Especifique toda la lista de notificaciones de salida para controlar el orden en que se presentan las notificaciones en la pantalla. Busque el elemento ClaimsProviders. Agregue un nuevo ClaimsProviders de la siguiente manera:

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

Leer y escribir una reclamación

Los siguientes perfiles técnicos son perfiles técnicos de Active Directory, que leen y escriben datos en Microsoft Entra ID.
Use PersistedClaims para escribir datos en el perfil de usuario y OutputClaims leer datos del perfil de usuario dentro de los perfiles técnicos de Active Directory correspondientes.

Invalide estos perfiles técnicos en el archivo de extensión. Busque el elemento ClaimsProviders. Agregue un nuevo ClaimsProviders de la siguiente manera:

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

Incluir una reclamación en el token

Para devolver la notificación de ciudad a la aplicación de usuario de confianza, agregue una notificación de salida al archivo SocialAndLocalAccounts/SignUpOrSignIn.xml. La notificación de salida se agregará al token después de un recorrido del usuario correcto y se enviará a la aplicación. Modifique el elemento de perfil técnico en la sección de usuario de confianza para agregar la ciudad como una notificación de salida.

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

Carga y prueba de la directiva personalizada actualizada

  1. Si tiene acceso a varios inquilinos, seleccione el icono Configuración en el menú superior para cambiar a su inquilino de Azure AD B2C desde el menú Directorios y suscripciones.
  2. Busque y seleccione Azure AD B2C.
  3. En Directivas, seleccione Identity Experience Framework.
  4. Seleccione Cargar directiva personalizada.
  5. Cargue los archivos de directiva que ha cambiado anteriormente.

Prueba la política personalizada

  1. Seleccione la directiva de usuarios de confianza, por ejemplo B2C_1A_signup_signin.
  2. En Aplicación, seleccione la aplicación web que registró anteriormente. La dirección URL de respuesta debe mostrar https://jwt.ms.
  3. Seleccione el botón Ejecutar ahora.
  4. En la página de registro o inicio de sesión, seleccione Registrarse ahora para registrarse. Termine de escribir la información del usuario, incluido el nombre de la ciudad y, a continuación, seleccione Crear. Debería ver el contenido del token que se devolvió.

La pantalla de registro debe ser similar a la siguiente captura de pantalla:

Captura de pantalla de la opción de registro modificada

El token enviado de vuelta a la aplicación contiene la notificación city.

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

[Opcional] Localización de la interfaz de usuario

Azure AD B2C permite adaptar la directiva a diferentes idiomas. Para obtener más información, obtenga información sobre cómo personalizar la experiencia de idioma. Para localizar la página de registro, configure la lista de idiomas admitidos y proporcione etiquetas específicas del idioma.

Nota:

Cuando se usa LocalizedCollection con las etiquetas específicas del idioma, puede quitar la colección Restriction de la definición de notificación.

En el ejemplo siguiente se muestra cómo proporcionar la lista de ciudades para inglés y español. Ambos establecen la colección Restriction de la notificación city con una lista de elementos para inglés y español. SelectByDefault hace que un elemento se seleccione de forma predeterminada cuando la página se cargue por primera vez.

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

Después de agregar el elemento de localización, edite la definición de contenido con la localización. En el ejemplo siguiente, se agregan recursos localizados personalizados de inglés (en) y español (es) a la página de registro:

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

Pasos siguientes