Compartir a través de


Configuración del cambio de contraseña mediante directivas personalizadas en Azure Active Directory B2C

Importante

A partir del 1 de mayo de 2025, Azure AD B2C no estará disponible para la compra 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.

Puede configurar Azure Active Directory B2C (Azure AD B2C) para que un usuario que haya iniciado sesión con una cuenta local pueda cambiar su contraseña sin usar la comprobación de correo electrónico para demostrar su identidad.

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

  1. El usuario inicia sesión en su cuenta local. Si la sesión sigue activa, Azure AD B2C autoriza al usuario y pasa al paso siguiente.

  2. En Contraseña antigua, el usuario comprueba su contraseña antigua. En Nueva contraseña, crean y confirman su nueva contraseña.

    Captura de pantalla que muestra dos diálogos numerados para realizar un cambio de contraseña.

Sugerencia

Un usuario puede usar el flujo de cambio de contraseña que se describe en este artículo solo cuando conoce su contraseña y quiere cambiar su contraseña. Se recomienda habilitar también el autoservicio de restablecimiento de contraseña para admitir casos en los que el usuario olvida su contraseña.

Esta característica está disponible solo para directivas personalizadas. Para conocer los pasos de configuración, seleccione Directiva personalizada en el selector anterior.

Prerrequisitos

Adición de los elementos

  1. Abra su archivo TrustFrameworkExtensions.xml . Agregue el siguiente elemento ClaimType al elemento ClaimsSchema , con un identificador de oldPassword:

    <BuildingBlocks>
      <ClaimsSchema>
        <ClaimType Id="oldPassword">
          <DisplayName>Old Password</DisplayName>
          <DataType>string</DataType>
          <UserHelpText>Enter your old password</UserHelpText>
          <UserInputType>Password</UserInputType>
        </ClaimType>
      </ClaimsSchema>
    </BuildingBlocks>
    
  2. Un elemento ClaimsProvider contiene el perfil técnico que autentica al usuario. Agregue los siguientes proveedores de notificaciones al elemento ClaimsProviders :

    <ClaimsProviders>
      <ClaimsProvider>
        <DisplayName>Local Account SignIn</DisplayName>
        <TechnicalProfiles>
          <TechnicalProfile Id="login-NonInteractive-PasswordChange">
            <DisplayName>Local Account SignIn</DisplayName>
            <InputClaims>
              <InputClaim ClaimTypeReferenceId="oldPassword" PartnerClaimType="password" Required="true" />
              </InputClaims>
            <IncludeTechnicalProfile ReferenceId="login-NonInteractive" />
          </TechnicalProfile>
        </TechnicalProfiles>
      </ClaimsProvider>
      <ClaimsProvider>
        <DisplayName>Local Account Password Change</DisplayName>
        <TechnicalProfiles>
          <TechnicalProfile Id="LocalAccountWritePasswordChangeUsingObjectId">
            <DisplayName>Change password (username)</DisplayName>
            <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.SelfAssertedAttributeProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
            <Metadata>
              <Item Key="ContentDefinitionReferenceId">api.selfasserted</Item>
            </Metadata>
            <InputClaims>
              <InputClaim ClaimTypeReferenceId="objectId" />
            </InputClaims>
            <OutputClaims>
              <OutputClaim ClaimTypeReferenceId="oldPassword" Required="true" />
              <OutputClaim ClaimTypeReferenceId="newPassword" Required="true" />
              <OutputClaim ClaimTypeReferenceId="reenterPassword" Required="true" />
            </OutputClaims>
            <ValidationTechnicalProfiles>
              <ValidationTechnicalProfile ReferenceId="login-NonInteractive-PasswordChange" />
              <ValidationTechnicalProfile ReferenceId="AAD-UserWritePasswordUsingObjectId" />
            </ValidationTechnicalProfiles>
          </TechnicalProfile>
        </TechnicalProfiles>
      </ClaimsProvider>
    </ClaimsProviders>
    
  3. El elemento UserJourneys define la ruta de acceso que toma el usuario cuando interactúa con la aplicación. Agregue el elemento UserJourneys si no existe, con el identificador UserJourney de PasswordChange:

    <UserJourneys>
      <UserJourney Id="PasswordChange">
        <OrchestrationSteps>
          <OrchestrationStep Order="1" Type="ClaimsProviderSelection" ContentDefinitionReferenceId="api.signuporsignin">
            <ClaimsProviderSelections>
              <ClaimsProviderSelection TargetClaimsExchangeId="LocalAccountSigninEmailExchange" />
            </ClaimsProviderSelections>
          </OrchestrationStep>
          <OrchestrationStep Order="2" Type="ClaimsExchange">
            <ClaimsExchanges>
              <ClaimsExchange Id="LocalAccountSigninEmailExchange" TechnicalProfileReferenceId="SelfAsserted-LocalAccountSignin-Email" />
            </ClaimsExchanges>
          </OrchestrationStep>
          <OrchestrationStep Order="3" Type="ClaimsExchange">
            <ClaimsExchanges>
              <ClaimsExchange Id="NewCredentials" TechnicalProfileReferenceId="LocalAccountWritePasswordChangeUsingObjectId" />
            </ClaimsExchanges>
          </OrchestrationStep>
          <OrchestrationStep Order="4" Type="ClaimsExchange">
            <ClaimsExchanges>
              <ClaimsExchange Id="AADUserReadWithObjectId" TechnicalProfileReferenceId="AAD-UserReadUsingObjectId" />
            </ClaimsExchanges>
          </OrchestrationStep>
          <OrchestrationStep Order="5" Type="SendClaims" CpimIssuerTechnicalProfileReferenceId="JwtIssuer" />
        </OrchestrationSteps>
        <ClientDefinition ReferenceId="DefaultWeb" />
      </UserJourney>
    </UserJourneys>
    
  4. Guarde el archivo de política TrustFrameworkExtensions.xml.

  5. Copie el archivo ProfileEdit.xml que descargó con el paquete de inicio y asígnele el nombreProfileEditPasswordChange.xml.

  6. Abra el nuevo archivo y actualice el atributo PolicyId con un valor único. Este valor es el nombre de la directiva. Por ejemplo, B2C_1A_profile_edit_password_change.

  7. Modifique el atributo ReferenceId de DefaultUserJourney para que coincida con el identificador del nuevo recorrido del usuario que creó. Por ejemplo, PasswordChange.

  8. Guarde los cambios.

Cargue y pruebe la directiva

  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. Elija Todos los servicios en la esquina superior izquierda de Azure Portal y busque y seleccione Azure AD B2C.
  4. Seleccione Marco de experiencia de identidad.
  5. En Directivas personalizadas, seleccione Cargar directiva.
  6. Seleccione Sobrescribir la política si existe, y luego busque y seleccione el archivo TrustFrameworkExtensions.xml.
  7. Seleccione Cargar.
  8. Repita los pasos 5 a 7 para el archivo del usuario de confianza, como ProfileEditPasswordChange.xml.

Ejecutar la política

  1. Abre la política que has cambiado. Por ejemplo, B2C_1A_profile_edit_password_change.
  2. En Aplicación, seleccione la aplicación que registró anteriormente. Para ver el token, la dirección URL de respuesta debe mostrar https://jwt.ms.
  3. Seleccione Ejecutar ahora. En la nueva pestaña que se abre, quite "&prompt=login" de la dirección URL y actualice la pestaña. A continuación, inicie sesión con la cuenta que creó anteriormente. Un cuadro de diálogo de cambio de contraseña le ofrece la opción de cambiar la contraseña.