Compartir a través de


Configuración de un flujo de restablecimiento de contraseña 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 un recorrido de registro e inicio de sesión, un usuario puede restablecer su propia contraseña mediante el vínculo ¿Olvidó la contraseña? Este flujo de autoservicio de restablecimiento de contraseña se aplica a las cuentas locales de Azure Active Directory B2C (Azure AD B2C) que usan una dirección de correo electrónico o un nombre de usuario con una contraseña para el inicio de sesión.

Sugerencia

Un usuario puede cambiar su contraseña mediante el flujo de autoservicio de restablecimiento de contraseña si olvida su contraseña y quiere restablecerla. También puede elegir una de las siguientes opciones de flujo de usuario para cambiar la contraseña de un usuario:

  • Si un usuario conoce su contraseña y quiere cambiarla, use un flujo de cambio de contraseña.
  • Si desea forzar que un usuario restablezca su contraseña (por ejemplo, cuando inicie sesión por primera vez, cuando un administrador restablezca sus contraseñas o después de migrar a Azure AD B2C con contraseñas aleatorias), use un flujo de restablecimiento de contraseña forzado .

El flujo de restablecimiento de contraseña implica los pasos siguientes:

  1. En la página de registro e inicio de sesión, el usuario selecciona el vínculo ¿Olvidó la contraseña? Azure AD B2C inicia el flujo de restablecimiento de contraseña.
  2. En el cuadro de diálogo siguiente que aparece, el usuario escribe su dirección de correo electrónico y, a continuación, selecciona Enviar código de verificación. Azure AD B2C envía un código de verificación a la cuenta de correo electrónico del usuario. El usuario copia el código de verificación del correo electrónico, escribe el código en el cuadro de diálogo de restablecimiento de contraseña de Azure AD B2C y, a continuación, selecciona Comprobar código.
  3. Después, el usuario puede escribir una nueva contraseña. (Una vez comprobado el correo electrónico, el usuario todavía puede seleccionar el botón Cambiar correo electrónico ; vea Ocultar el botón cambiar correo electrónico si desea quitarlo).

Diagrama que muestra tres diálogos en el flujo de restablecimiento de contraseña.

El nombre predeterminado del botón Cambiar correo electrónico en selfAsserted.html es changeclaims. Para buscar el nombre del botón, en la página de registro, inspeccione el origen de la página mediante una herramienta del explorador, como Inspeccionar.

Prerrequisitos

  • Los usuarios de B2C deben tener un método de autenticación especificado para el autoservicio de restablecimiento de contraseña. Seleccione el usuario B2C, en el menú de la izquierda, en Administrar, seleccione Métodos de autenticación. Asegúrese de que la información de contacto de autenticación esté establecida. Los usuarios de B2C creados a través de un flujo de registro tienen esto establecido de forma predeterminada. Para los usuarios creados a través de Azure Portal o graph API, debe establecer la información de contacto de autenticación para que SSPR funcione.

La nueva experiencia de restablecimiento de contraseña forma parte de la directiva de registro o de inicio de sesión. Cuando el usuario selecciona el vínculo ¿Olvidó la contraseña? , se le enviará inmediatamente a la experiencia de contraseña olvidada. La aplicación ya no necesita controlar el código de error AADB2C90118 y no necesita una directiva independiente para el restablecimiento de contraseña.

La experiencia de autoservicio de restablecimiento de contraseña se puede configurar para los flujos de usuario de Inicio de sesión (Recomendado) o Registro e inicio de sesión (Recomendado). Si no tiene una de estas configuraciones de flujos de usuario, cree un flujo de usuario de registro o de inicio de sesión .

Para configurar el autoservicio de restablecimiento de contraseña para el flujo de usuario de registro o de inicio de sesión:

  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 Azure Portal, busque y seleccione Azure AD B2C.
  4. Seleccione Flujos de usuario.
  5. Seleccione un flujo de usuario de registro o de inicio de sesión (de tipo Recomendado) que quiera personalizar.
  6. En el menú de Configuración, seleccione Propiedades.
  7. En Configuración de contraseña, seleccione Autoservicio de restablecimiento de contraseña.
  8. Haga clic en Guardar.
  9. En el menú de la izquierda, en Personalizar, seleccione Diseños de página.
  10. En Versión de diseño de página, seleccione 2.1.3 o posterior.
  11. Haga clic en Guardar.

En las secciones siguientes se describe cómo agregar una experiencia de contraseña de autoservicio a una directiva personalizada. El ejemplo se basa en los archivos de directiva que se incluyen en el paquete de inicio de directivas personalizado.

Sugerencia

Puede encontrar un ejemplo completo de la directiva de registro e inicio de sesión con restablecimiento de contraseña en GitHub.

Para indicar a la directiva que un usuario seleccionó el vínculo ¿Olvidó la contraseña? , defina una notificación booleana. Utilice el reclamo para dirigir el recorrido del usuario al perfil técnico Contraseña Olvidada. La reclamación también se puede emitir al token, de modo que la aplicación detecta que el usuario ha iniciado sesión mediante el flujo de usuario de 'Olvidó su contraseña'.

Declara tus reclamaciones en el esquema de reclamaciones. Abra el archivo de extensiones de tu política, por ejemplo, en 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 la siguiente notificación al elemento ClaimsSchema .

    <!-- 
    <BuildingBlocks>
      <ClaimsSchema> -->
        <ClaimType Id="isForgotPassword">
          <DisplayName>isForgotPassword</DisplayName>
          <DataType>boolean</DataType>
          <AdminHelpText>Whether the user has selected Forgot your Password</AdminHelpText>
        </ClaimType>
      <!--
      </ClaimsSchema>
    </BuildingBlocks> -->
    

Actualización de la versión de diseño de página

La versión 2.1.2 del diseño de página es necesaria para habilitar el flujo de restablecimiento de contraseña de autoservicio en el recorrido de registro o inicio de sesión. Para actualizar la versión del diseño de página:

  1. Abra el archivo base de la directiva, por ejemplo, SocialAndLocalAccounts/TrustFrameworkBase.xml.

  2. Busque el elemento BuildingBlocks . Si el elemento no existe, agréguelo.

  3. Busque el elemento ContentDefinitions . Si el elemento no existe, agréguelo.

  4. Modifique el elemento DataURI dentro del elemento ContentDefinition para que tenga el identificador api.signuporsignin:

    <!-- 
    <BuildingBlocks>
      <ContentDefinitions> -->
        <ContentDefinition Id="api.signuporsignin">
          <DataUri>urn:com:microsoft:aad:b2c:elements:contract:unifiedssp:2.1.2</DataUri>
        </ContentDefinition>
      <!-- 
      </ContentDefinitions>
    </BuildingBlocks> -->
    

Agregar los perfiles técnicos

Un perfil técnico de transformación de notificaciones accede a la notificación isForgotPassword. Más adelante se hace referencia al perfil técnico. Cuando se invoca, establece el valor de la isForgotPassword declaración en true.

  1. Abra el archivo de extensiones de tu política, por ejemplo, en SocialAndLocalAccounts/TrustFrameworkExtensions.xml.
  2. Busque el elemento ClaimsProviders (si el elemento no existe, créelo) y agregue el siguiente proveedor de notificaciones:
<!-- 
<ClaimsProviders> -->
  <ClaimsProvider>
    <DisplayName>Local Account</DisplayName>
    <TechnicalProfiles>
      <TechnicalProfile Id="ForgotPassword">
        <DisplayName>Forgot your password?</DisplayName>
        <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.ClaimsTransformationProtocolProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"/>
        <OutputClaims>
          <OutputClaim ClaimTypeReferenceId="isForgotPassword" DefaultValue="true" AlwaysUseDefaultValue="true"/>
        </OutputClaims>
        <UseTechnicalProfileForSessionManagement ReferenceId="SM-Noop" />
      </TechnicalProfile>
      <TechnicalProfile Id="SelfAsserted-LocalAccountSignin-Email">
        <Metadata>
          <Item Key="setting.forgotPasswordLinkOverride">ForgotPasswordExchange</Item>
        </Metadata>
      </TechnicalProfile>
      <TechnicalProfile Id="LocalAccountWritePasswordUsingObjectId">
        <UseTechnicalProfileForSessionManagement ReferenceId="SM-AAD" />
      </TechnicalProfile>
    </TechnicalProfiles>
  </ClaimsProvider>
<!-- 
</ClaimsProviders> -->

El perfil técnico de SelfAsserted-LocalAccountSignin-Emailsetting.forgotPasswordLinkOverride define el intercambio de notificaciones de restablecimiento de contraseña que se ejecuta en el recorrido del usuario.

El administrador de sesión UseTechnicalProfileForSessionManagement del perfil técnico de SM-AAD es necesario para que el usuario realice inicios de sesión posteriores correctamente en condiciones de SSO.

Añade el subproceso de restablecimiento de contraseña

El usuario ahora puede iniciar sesión, registrarse y restablecer la contraseña en su experiencia de usuario. Para organizar mejor el recorrido del usuario, se puede usar un subrecorrido para administrar el flujo de restablecimiento de contraseña.

El subrecorrido se llamará desde el recorrido del usuario y llevará a cabo los pasos específicos para proporcionar al usuario la experiencia de restablecimiento de contraseña. Use el tipo de subproceso Call para que, cuando finalice el subtrayecto, se devuelva el control al paso de orquestación que lo inició.

  1. Abra el archivo de extensiones de su directiva, tal como SocialAndLocalAccounts/TrustFrameworkExtensions.xml.
  2. Busque el elemento SubJourneys . Si el elemento no existe, agréguelo después del elemento User Journeys . A continuación, agregue la siguiente subetapa:
<!--
<SubJourneys>-->
  <SubJourney Id="PasswordReset" Type="Call">
    <OrchestrationSteps>
      <!-- Validate user's email address. -->
      <OrchestrationStep Order="1" Type="ClaimsExchange">
        <ClaimsExchanges>
          <ClaimsExchange Id="PasswordResetUsingEmailAddressExchange" TechnicalProfileReferenceId="LocalAccountDiscoveryUsingEmailAddress" />
        </ClaimsExchanges>
      </OrchestrationStep>

      <!-- Collect and persist a new password. -->
      <OrchestrationStep Order="2" Type="ClaimsExchange">
        <ClaimsExchanges>
          <ClaimsExchange Id="NewCredentials" TechnicalProfileReferenceId="LocalAccountWritePasswordUsingObjectId" />
        </ClaimsExchanges>
      </OrchestrationStep>
    </OrchestrationSteps>
  </SubJourney>
<!--
</SubJourneys>-->

Preparación del recorrido del usuario

A continuación, para conectar el vínculo ¿Olvidó la contraseña? al subproceso Contraseña olvidada, debe hacer referencia al identificador de subrecorrido Contraseña olvidada en el elemento ClaimsProviderSelection del paso CombinedSignInAndSignUp.

Si no tiene su propio recorrido de usuario personalizado con un paso CombinedSignInAndSignUp, realice los pasos siguientes para duplicar un recorrido de usuario de registro o inicio de sesión existente. De lo contrario, continúe con la sección siguiente.

  1. En el paquete de inicio, abra el archivo TrustFrameworkBase.xml , como SocialAndLocalAccounts/TrustFrameworkBase.xml.
  2. Busque y copie todo el contenido del elemento UserJourney que incluye Id="SignUpOrSignIn".
  3. Abra TrustFrameworkExtensions.xml archivo, como SocialAndLocalAccounts/TrustFrameworkExtensions.xmly busque el elemento UserJourneys . Si el elemento no existe, créelo.
  4. Cree un elemento secundario del elemento UserJourneys pegando todo el contenido del elemento UserJourney que copió en el paso 2.
  5. Cambie el identificador del recorrido del usuario. Por ejemplo: Id="CustomSignUpSignIn".

En el recorrido del usuario, puede representar el subrecorrido de contraseña olvidada como ClaimsProviderSelection. Al agregar este elemento, conecta el vínculo ¿Olvidó la contraseña? al subdirecurso Contraseña olvidada.

  1. Abra el archivo TrustFrameworkExtensions.xml , como SocialAndLocalAccounts/TrustFrameworkExtensions.xml.

  2. En el recorrido del usuario, busque el elemento del paso de orquestación que incluye Type="CombinedSignInAndSignUp" o Type="ClaimsProviderSelection". Normalmente es el primer paso de orquestación. El elemento ClaimsProviderSelections contiene una lista de proveedores de identidades que un usuario puede usar para iniciar sesión. Agregue la línea siguiente:

    <ClaimsProviderSelection TargetClaimsExchangeId="ForgotPasswordExchange" />
    
  3. En el siguiente paso de orquestación, agregue un elemento ClaimsExchange agregando la siguiente línea:

    <ClaimsExchange Id="ForgotPasswordExchange" TechnicalProfileReferenceId="ForgotPassword" />
    
  4. Agregue el siguiente paso de orquestación entre el paso actual y el paso siguiente. El nuevo paso de orquestación que agregas comprueba si existe la reclamación isForgotPassword. Si la notificación existe, invoca el subrecorrido de restablecimiento de contraseña.

    <OrchestrationStep Order="3" Type="InvokeSubJourney">
      <Preconditions>
        <Precondition Type="ClaimsExist" ExecuteActionsIf="false">
          <Value>isForgotPassword</Value>
          <Action>SkipThisOrchestrationStep</Action>
        </Precondition>
      </Preconditions>
      <JourneyList>
        <Candidate SubJourneyReferenceId="PasswordReset" />
      </JourneyList>
    </OrchestrationStep>
    
  5. Después de agregar el nuevo paso de orquestación, vuelva a numerar los pasos secuencialmente sin omitir ningún entero de 1 a N.

Establecimiento del recorrido de usuario que se va a ejecutar

Ahora que ha modificado o creado un recorrido de usuario, en la sección Usuario de confianza, especifique el recorrido que ejecutará Azure AD B2C para esta directiva personalizada.

  1. Abra el archivo que tiene el elemento Usuario de confianza , como SocialAndLocalAccounts/SignUpOrSignin.xml.

  2. En el elemento RelyingParty , busque el elemento DefaultUserJourney .

  3. Actualice DefaultUserJourney ReferenceId para que coincida con el identificador del recorrido del usuario en el que ha agregado el elemento ClaimsProviderSelections.

<RelyingParty>
  <DefaultUserJourney ReferenceId="CustomSignUpSignIn" />
  ...
</RelyingParty>

Indicación del flujo de contraseña olvidada a la aplicación

Es posible que la aplicación tenga que detectar si el usuario ha iniciado sesión con el flujo de usuario Olvidé contraseña. La notificación isForgotPassword contiene un valor booleano que indica que lo hicieron. La notificación se puede emitir en el token que se envía a la aplicación. Si es necesario, agregue isForgotPassword a las notificaciones de salida de la sección Usuario de confianza. La aplicación puede comprobar la notificación isForgotPassword para determinar si el usuario restablece su contraseña.

<RelyingParty>
  <OutputClaims>
    ...
    <OutputClaim ClaimTypeReferenceId="isForgotPassword" DefaultValue="false" />
  </OutputClaims>
</RelyingParty>

Carga de la directiva personalizada

  1. Inicie sesión en Azure Portal.
  2. Si tiene acceso a varios inquilinos, seleccione el icono Configuración del menú superior para cambiar al inquilino de Azure AD B2C en el menú Directorios y suscripciones .
  3. En Azure Portal, busque y seleccione Azure AD B2C.
  4. En el menú de Directivas, seleccione Identity Experience Framework.
  5. Seleccione Cargar directiva personalizada. En el orden siguiente, cargue los archivos de directiva que ha cambiado:
    1. El archivo base de la directiva, por ejemplo ,TrustFrameworkBase.xml.
    2. La directiva de extensión, por ejemplo, TrustFrameworkExtensions.xml.
    3. La directiva de usuario de confianza, por ejemplo SignUpSignIn.xml.

Ocultar el botón cambiar correo electrónico (opcional)

Una vez comprobado el correo electrónico, el usuario todavía puede seleccionar Cambiar correo electrónico, escribir otra dirección de correo electrónico y, a continuación, repetir la comprobación del correo electrónico. Si prefiere ocultar el botón Cambiar correo electrónico , puede modificar el CSS para ocultar los elementos HTML asociados en el cuadro de diálogo. Por ejemplo, puede agregar la siguiente entrada CSS a selfAsserted.html y personalizar la interfaz de usuario mediante plantillas HTML:

<style type="text/css">
   .changeClaims
   {
     visibility: hidden;
   }
</style>

Prueba del flujo de restablecimiento de contraseña

  1. Seleccione un flujo de usuario de registro o de inicio de sesión (tipo recomendado) que quiera probar.
  2. Seleccione Ejecutar flujo de usuario.
  3. En Aplicación, seleccione la aplicación web denominada webapp1 que registró anteriormente. La dirección URL de respuesta debe mostrar https://jwt.ms.
  4. Seleccione Ejecutar flujo de usuario.
  5. En la página de registro o inicio de sesión, seleccione ¿Olvidó la contraseña?.
  6. Compruebe la dirección de correo electrónico de la cuenta que creó anteriormente y, a continuación, seleccione Continuar.
  7. En el cuadro de diálogo que se muestra, cambie la contraseña del usuario y, a continuación, seleccione Continuar. El token se devuelve a https://jwt.ms y el explorador lo muestra.
  8. Compruebe el valor de la notificación isForgotPassword del token devuelto. Si existe y se establece en true, el usuario ha restablecido la contraseña.

Directiva de restablecimiento de contraseña (heredada)

Si la experiencia de autoservicio de restablecimiento de contraseña no está habilitada, al seleccionar este vínculo no se desencadena automáticamente un flujo de usuario de restablecimiento de contraseña. En su lugar, el código AADB2C90118 de error se devuelve a la aplicación. La aplicación debe controlar este código de error reinicializando la biblioteca de autenticación para autenticar un flujo de usuario de restablecimiento de contraseña de Azure AD B2C.

En el diagrama siguiente se muestra el proceso:

  1. En la aplicación, el usuario selecciona Iniciar sesión. La aplicación inicia una solicitud de autorización y redirige a Azure AD B2C para que el usuario pueda terminar de iniciar sesión. La solicitud de autorización especifica un nombre de directiva de registro o de inicio de sesión, como B2C_1_signup_signin.
  2. El usuario selecciona el vínculo ¿Olvidó la contraseña? Azure AD B2C devuelve el AADB2C90118 código de error a la aplicación.
  3. La aplicación controla el código de error e inicia una nueva solicitud de autorización. La solicitud de autorización especifica el nombre de la directiva de restablecimiento de contraseña, como B2C_1_pwd_reset.

Diagrama que muestra el flujo de usuario de restablecimiento de contraseña heredado con pasos numerados.

Puede ver una demostración básica de cómo se vinculan los flujos de usuario en nuestro ejemplo de ASP.NET.

Creación de un flujo de usuario de restablecimiento de contraseña

Para permitir que los usuarios de la aplicación restablezcan sus contraseñas, cree un flujo de usuario de restablecimiento de contraseña:

  1. En Azure Portal, vaya a la información general del inquilino de Azure AD B2C.
  2. En el menú de la izquierda, en Directivas, seleccione Flujos de usuario y, a continuación, seleccione Nuevo flujo de usuario.
  3. En Crear un flujo de usuario, seleccione el flujo de usuario de restablecimiento de contraseña .
  4. En Seleccionar una versión, seleccione Recomendado y, a continuación, seleccione Crear.
  5. En Nombre, escriba un nombre para el flujo de usuario. Por ejemplo, passwordreset1.
  6. En El caso de los proveedores de identidades, habilite Restablecer contraseña mediante el nombre de usuario o Restablecer contraseña mediante la dirección de correo electrónico.
  7. En Autenticación multifactor, si desea requerir que los usuarios comprueben sus identidades mediante un segundo método de autenticación, seleccione el tipo de método y cuándo aplicar la autenticación multifactor. Más información.
  8. En Acceso condicional, si ha configurado directivas de acceso condicional para el inquilino de Azure AD B2C y quiere usarlas en este flujo de usuario, active la casilla Aplicar directivas de acceso condicional . No es necesario especificar un nombre de directiva. Más información.
  9. En Notificaciones de aplicación, seleccione Mostrar más. Elija las afirmaciones que desea incluir en los tokens de autorización que se envían a su aplicación. Por ejemplo, seleccione Id. de objeto del usuario.
  10. Selecciona Aceptar.
  11. Seleccione Crear para agregar el flujo de usuario. Se agrega automáticamente un prefijo de B2C_1 al nombre.

Prueba del flujo de usuario

Para probar el flujo de usuario:

  1. Seleccione el flujo de usuario que creó. En la página de información general del flujo de usuario, seleccione Ejecutar flujo de usuario.
  2. En Aplicación, seleccione la aplicación web que desea probar, como la denominada webapp1 si lo registró anteriormente. La dirección URL de respuesta debe ser https://jwt.ms.
  3. Seleccione Ejecutar flujo de usuario, compruebe la dirección de correo electrónico de la cuenta para la que desea restablecer la contraseña y, a continuación, seleccione Continuar.
  4. Cambie la contraseña y, a continuación, seleccione Continuar. El token se devuelve a https://jwt.ms y el explorador lo muestra.

Creación de una directiva de restablecimiento de contraseña

Las directivas personalizadas son un conjunto de archivos XML que se cargan en el inquilino de Azure AD B2C para definir recorridos de usuario. Proporcionamos paquetes de inicio que tienen varias directivas precompiladas, incluidas las directivas de registro e inicio de sesión, restablecimiento de contraseña y edición de perfiles. Para más información, consulte Introducción a las directivas personalizadas en Azure AD B2C.

Solución de problemas de flujos de usuario de Azure AD B2C y directivas personalizadas

La aplicación debe controlar determinados errores procedentes del servicio Azure B2C. Aprenda a solucionar problemas de flujos de usuario y directivas personalizadas de Azure AD B2C.

Configurar un restablecimiento de contraseña forzado.

Registro e inicio de sesión con restablecimiento de contraseña incrustado.