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

Antes de comenzar, use el selector Elección de un tipo de directiva para elegir el tipo de directiva que va a configurar. Azure Active Directory B2C ofrece dos métodos para definir el modo en que los usuarios interactúan con las aplicaciones: por medio de flujos de usuario predefinidos o de 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 por correo electrónico para demostrar su identidad.

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

  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 siguiente paso.

  2. En Contraseña anterior, el usuario comprueba su contraseña anterior. En Nueva contraseña, crea y confirma su nueva contraseña.

    Screenshot that shows two numbered dialogs for making a password change.

Sugerencia

Un usuario puede usar el flujo de cambio de contraseña que se describe en este artículo solo si sabe su contraseña y quiere cambiarla. Le recomendamos que habilite también el autoservicio de restablecimiento de contraseña para que se admitan aquellos casos en los que el usuario olvida su contraseña.

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

Requisitos previos

Adición de los elementos

  1. Abra el 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 el usuario toma al interactuar con la aplicación. Agregue el elemento UserJourneys si no existe, con el elemento UserJourney con un identificador 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 directiva TrustFrameworkExtensions.xml.

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

  6. Abra el archivo nuevo 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 ha creado. 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 al 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 directiva si existe, y 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.

Ejecución de la directiva

  1. Abra la directiva que ha cambiado. Por ejemplo, B2C_1A_profile_edit_password_change.
  2. En Aplicación, seleccione la aplicación que registró anteriormente. Para ver el token, 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.

Pasos siguientes