Estabelecer um fluxo de redefinição de senha no Azure Active Directory B2C

Antes de começar, use o seletor Escolher um tipo de política para escolher o tipo de política que você está configurando. O Azure Active Directory B2C oferece dois métodos para definir como os usuários interagem com seus aplicativos: por meio de fluxos dos usuários predefinidos ou de políticas personalizadas totalmente configuráveis. As etapas necessárias neste artigo são diferentes para cada método.

Em um percurso de inscrição e entrada, um usuário pode redefinir a senha usando o link Esqueceu sua senha? . Esse fluxo de redefinição de senha self-service pode ser aplicado às contas locais do Azure AD B2C que usam um endereço de email ou um nome de usuário com uma senha para entrada.

O fluxo de redefinição de senha implica as seguintes etapas:

  1. Na página de inscrição e entrada, o usuário seleciona o link Esqueceu sua senha? . O Azure Active Directory B2C inicia o fluxo de redefinição de senha.
  2. No próximo diálogo exibido, o usuário insere seu endereço de email e seleciona Enviar código de verificação. O Azure AD B2C envia o código de verificação para a conta de email do usuário. Em seguida, o usuário copia o código de verificação do email, insere-o no diálogo de redefinição de senha do Azure AD B2C e seleciona Verificar código.
  3. O usuário pode inserir uma nova senha. (Após a confirmação do email, o usuário ainda poderá selecionar o botão Alterar email; confira Ocultar o botão Alterar email.)

Diagram that shows three dialogs in the password reset flow.

Dica

Um usuário pode alterar sua senha usando o fluxo de redefinição de senha self-service, caso esqueça a sua senha e deseje redefini-la. Você também pode escolher uma das opções de fluxos de usuário a seguir:

  • Se um usuário souber a senha e desejar alterá-la, use um fluxo de alteração de senha.
  • Se você deseja forçar um usuário a redefinir a senha (por exemplo, quando eles entram pela primeira vez, quando as senhas tiverem sido redefinidas por um administrador ou depois que eles forem migrados para o Azure AD B2C com senhas aleatórias), use um fluxo de redefinição de senha forçada.

O nome padrão do botão Alterar email em selfasserted.html é changeclaims. Para localizar o nome do botão, na página de assinatura, inspecione a origem da página usando uma ferramenta do navegador como a Inspecionar.

Pré-requisitos

Ocultar o botão Alterar email

Após a confirmação do email, o usuário ainda pode selecionar Alterar email, inserir outro endereço de email e repetir a verificação de email. Se você preferir ocultar o botão Alterar email, você pode modificar o CSS para ocultar os elementos HTML associados no diálogo. Por exemplo, você pode adicionar a entrada CSS a seguir ao selfAsserted.html e personalizar a interface do usuário usando modelos HTML:

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

A nova experiência de redefinição de senha agora faz parte da política de inscrição ou de início de sessão. Quando o usuário seleciona o linkesqueceu sua senha? ele é imediatamente enviado para a experiência de senha esquecida. Seu aplicativo não precisa mais manipular ocódigo de erro AADB2C90118e você não precisa de uma política separada para redefinição de senha.

A experiência de redefinição de senha self-service pode ser configurada para os fluxos de usuário de entrada (Recomendado) ou inscrever-se e entrar (Recomendado). Se você não tiver um desses fluxos de usuário configurado, crie um fluxo de usuário de inscrição ou entrada.

Para configurar a redefinição de senha self-service para o fluxo de usuários de inscrição ou entrada:

  1. Entre no portal do Azure.
  2. Se você tiver acesso a vários locatários, selecione o ícone Configurações no menu superior para alternar para o seu locatário do Azure Active Directory B2C no menu Diretórios + assinaturas.
  3. No portal do Azure, pesquise e selecione Azure AD B2C.
  4. Escolha Fluxos de usuário.
  5. Selecione um fluxo de usuário de inscrição ou entrada (do tipoRecomendado) que você deseja testar.
  6. No menu, em Configurações, selecione Propriedades.
  7. Em Configuração da senha, selecione Redefinição de senha self-service.
  8. Clique em Salvar.
  9. No menu à esquerda, em Personalizar, selecione Layouts da página.
  10. Em Versão do Layout daPágina, selecione 2.1.3 ou posterior.
  11. Selecione Salvar.

As seguintes seções descrevem como adicionar uma experiência de autoatendimento de senha a uma política personalizada. A amostra é baseada nos arquivos da política que estão incluídos nopacote inicial da política personalizada.

Dica

Você pode encontrar uma amostra completa da política Inscrição ou entrada com a redefinição de senha noGitHub.

Para indicar à política que um usuário selecionou o link Esqueceu sua senha? , defina uma declaração booliana. Use a declaração para direcionar o percurso do usuário para o perfil técnico de Senha esquecida. A declaração também pode ser emitida ao token para o aplicativo detectar que o usuário conectou-se por meio do fluxo de usuário de Senha esquecida.

Declarar suas declarações noesquema de declarações. Abra o arquivo de extensão de sua política, por exemplo, em SocialAndLocalAccounts/TrustFrameworkExtensions.xml.

  1. Pesquise o elemento BuildingBlocks. Se o elemento não existir, adicione-o.

  2. Localize o elemento ClaimsSchema. Se o elemento não existir, adicione-o.

  3. Adicione a declaração a seguir ao elementoClaimsSchema.

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

Atualize a versão de layout da página

A versão de layout da página 2.1.2 é necessária para habilitar o fluxo de redefinição de senha self-service no percurso de inscrição ou entrada. Para atualizar a versão de layout da página:

  1. Abra o arquivo base da sua política, por exemplo, SocialAndLocalAccounts/TrustFrameworkBase.xml.

  2. Pesquise o elemento BuildingBlocks. Se o elemento não existir, adicione-o.

  3. Localizar o elementoContentDefinitions. Se o elemento não existir, adicione-o.

  4. Modifique o elemento DataURI dentro do elemento ContentDefinition para ter a ID api.signuporsignin:

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

Adicionar os perfis técnicos

Um perfil técnico de transformação de declarações acessa a declaração isForgotPassword. O perfil técnico é referenciado posteriormente. Quando invocado, ele define o valor da declaração isForgotPassword como true.

  1. Abra o arquivo de extensão de sua política, por exemplo, em SocialAndLocalAccounts/TrustFrameworkExtensions.xml.
  2. Localize o elemento ClaimsProviders (se o elemento não existir, crie-o) e adicione o seguinte provedor de declarações:
<!-- 
<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> -->

A configuração do perfil técnico SelfAsserted-LocalAccountSignin-Emailsetting.forgotPasswordLinkOverride define a troca de declarações de redefinição de senha executada no percurso do usuário.

O perfil técnico LocalAccountWritePasswordUsingObjectIddo gerente de sessão UseTechnicalProfileForSessionManagementSM-AAD é necessário para que o usuário execute logons subsequentes com êxito em condições de SSO.

Adicionar a redefinição de senha no sub-percurso

Agora, o usuário pode entrar, inscrever-se e executar a redefinição de senha no percurso do usuário. Para organizar melhor a jornada do usuário, você pode usar uma sub-percurso para lidar com o fluxo de redefinição de senha.

O sub-percurso é chamado a partir do percurso do usuário e executa as etapas específicas que fornecem a experiência de redefinição de senha ao usuário. Use o tipo de sub-percurso Call para que, depois que o sub-percurso for finalizado, o controle seja retornado para a etapa de orquestração que iniciou o sub-percurso.

  1. Abra o arquivo de extensões de sua política, como SocialAndLocalAccounts/TrustFrameworkExtensions.xml.
  2. Encontrar um elemento SubJourneys. Se o elemento não existir, adicione-o após o elemento Percursos do usuário. Em seguida, adicione o seguinte sub-percurso:
<!--
<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>-->

Preparar o percurso do usuário

Em seguida, para conectar o link Esqueceu a senha? ao subpercurso Senha esquecida, você precisa referenciar a ID do subpercurso de Senha esquecida no elemento ClaimsProviderSelection da etapa CombinedSignInAndSignUp.

Se você não tiver o próprio percurso do usuário personalizado com uma etapaCombinedSignInAndSignUp, conclua as etapas a seguir para duplicar um percurso do usuário de inscrição ou de entrada existente. Caso contrário, prossiga para a próxima seção.

  1. No pacote inicial, abra o arquivo TrustFrameworkBase.xml como SocialAndLocalAccounts/TrustFrameworkBase.xml.
  2. Localize e copie todo o conteúdo do elemento UserJourney que inclui Id="SignUpOrSignIn".
  3. Abra o arquivo TrustFrameworkExtensions.xml, como SocialAndLocalAccounts/TrustFrameworkExtensions.xml, e localize o elemento UserJourneys. Se o elemento não existir, crie-o.
  4. Crie um elemento filho do elementoUserJourneyscolando todo o conteúdo do elementoUserJourneyscopiado na etapa 2.
  5. Renomeie a ID do percurso do usuário. Por exemplo, Id="CustomSignUpSignIn".

No percurso do usuário, você pode constituir a subjornada da senha esquecida como umaClaimsProviderSelection. Ao adicionar esse elemento, você conectará o link Esqueceu sua senha? para a subjornada Esqueci a senha.

  1. Abra o arquivo TrustFrameworkExtensions.xml, como SocialAndLocalAccounts/TrustFrameworkExtensions.xml.

  2. No percurso do usuário, localize o elemento etapa de orquestração que inclui Type="CombinedSignInAndSignUp"ouType="ClaimsProviderSelection". Comumente é a primeira etapa da orquestração. O elementoClaimsProviderSelectionscontém uma lista de provedores de identidade que um usuário pode usar para conectar. Adicione a seguinte linha:

    <ClaimsProviderSelection TargetClaimsExchangeId="ForgotPasswordExchange" />
    
  3. Na próxima etapa de orquestração, adicione um elemento ClaimsExchange adicionando a seguinte linha:

    <ClaimsExchange Id="ForgotPasswordExchange" TechnicalProfileReferenceId="ForgotPassword" />
    
  4. Adicione a seguinte etapa da orquestração entre a etapa vigente e a próxima etapa. A nova execução em etapas da orquestração adicionada verifica se a declaração isForgotPassword existe. Se a declaração existir, ela invocará asub-rotina de redefinição de senha.

    <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. Após adicionar as novas execuções em etapas da orquestração, renumere as etapas sequencialmente sem ignorar números inteiros de 1 a N.

Definir o percurso do usuário a ser executado

Agora que você modificou ou criou um percurso do usuário, na seçãoterceira parte confiável, especifique o percurso que o Azure Active Directory B2C executará para esta política personalizada.

  1. Abra o arquivo que contém o elemento Terceira Parte Confiável, como SocialAndLocalAccounts/SignUpOrSignin.xml.

  2. No elemento RelyingParty, localize o elemento DefaultUserJourney.

  3. Atualize a IdReferência DefaultUserJourney para corresponder à ID do percurso do usuário na qual você adicionou o ClaimsProviderSelections.

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

Indicar o fluxo de Esqueci a senha para seu aplicativo

Seu aplicativo pode precisar detectar se o usuário conectou-se usando o fluxo de usuário de Senha esquecida. A declaração isForgotPassword contém um valor booliano indicando que sim. A declaração pode ser emitida no token enviado para o aplicativo. Se necessário, adicione isForgotPassword às declarações de saída na seção terceira parte confiável. Seu aplicativo pode verificar a declaração isForgotPassword para determinar se o usuário deve redefinir a senha.

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

Carregar a política personalizada

  1. Entre no portal do Azure.
  2. Se você tiver acesso a vários locatários, selecione o ícone Configurações no menu superior para alternar para o locatário do Azure AD B2C no menu Diretórios + assinaturas.
  3. No portal do Azure, pesquise e selecione Azure AD B2C.
  4. No menu, em Políticas, selecione Identity Experience Framework.
  5. Selecione Carregar política personalizada. Carregue os arquivos de política que você alterou na ordem a seguir:
    1. O arquivo base da política, por exemplo, TrustFrameworkBase.xml.
    2. A política de extensão, por exemplo, TrustFrameworkExtensions.xml.
    3. A política de terceira parte confiável, por exemploSignUpSignIn.xml.

Examinar o fluxo de redefinição de senha

  1. Selecione um fluxo de inscrição ou entrada do usuário (tipo Recomendado) que você deseja examinar.
  2. Selecione Executar fluxo de usuário.
  3. Para Aplicativo, selecione o aplicativo Web denominado webapp1 que você registrou anteriormente. A URL de resposta deve mostrar https://jwt.ms.
  4. Selecione Executar fluxo de usuário.
  5. Na página de inscrição ou entrada, escolha Esqueceu sua senha? .
  6. Verifique o endereço de email da conta que você criou anteriormente e selecione Continuar.
  7. Na caixa de diálogo mostrada, altere a senha do usuário e, em seguida, selecione Continuar. O token é retornado para https://jwt.ms e o navegador o exibe.
  8. Verifique o valor de declaração retornado do token isForgotPassword. Se ele existir e for definido como true, o usuário redefiniu a senha.

Política de redefinição de senha (herdada)

Se a experiência de redefinição de senha self-service não estiver habilitada, selecionar este link não acionará automaticamente um fluxo de redefinição de senha do usuário. Em vez disso, o código de erro AADB2C90118 é retornado para seu aplicativo. Seu aplicativo deve identificar esse código de erro reinicializando a biblioteca de autenticação para autenticar um fluxo de redefinição de senha do usuário no Azure AD B2C.

O diagrama a seguir ilustra o processo:

  1. No aplicativo, o usuário seleciona Entrar. O aplicativo inicia uma solicitação de autorização e redireciona o usuário ao Azure AD B2C para que ele conclua a sua entrada. A solicitação de autorização especifica o nome da política de inscrição ou entrada, como B2C_1_signup_signin.

  2. O usuário seleciona o linkEsqueceu sua senha? . O Azure AD B2C retorna o código de erro AADB2C90118 para o aplicativo.

  3. O aplicativo identifica o código de erro e inicia uma nova solicitação de autorização. A solicitação de autorização especifica o nome da política de redefinição de senha, tal comoB2C_1_pwd_reset.

    Diagram that shows the legacy password reset user flow.

Você pode ver um exemplo de ASP.NET básico, que demonstra como os fluxos do usuário se vinculam.

Criar um fluxo de usuário de redefinição de senha

Para permitir que os usuários do aplicativo redefinam a senha, crie um fluxo de usuário de redefinição de senha:

  1. No portal do Azure, acesse a visão geral de locatário do Azure AD B2C.
  2. No menu à esquerda, em Políticas, selecione Fluxos de usuários e, em seguida, selecione Novo fluxo de usuário.
  3. Em Criar um fluxo de usuário, selecione o fluxo de usuário Redefinição de senha.
  4. Em Selecionar uma versão, selecione Recomendado e, em seguida, selecione Criar.
  5. Em Nome, insira um nome para o fluxo de usuário. Por exemplo, passwordreset1.
  6. Em Provedores de identidade, habilite Redefinir senha usando o nome de usuário ou Redefinir senha usando o endereço de email.
  7. Em Autenticação multifator, caso deseje exigir que os usuários confirmem a identidade usando um segundo método de autenticação, selecione o tipo de método e quando a autenticação multifator deve ser imposta. Saiba mais.
  8. Em Acesso condicional, se você configurou políticas de acesso condicional para seu locatário do Azure AD B2C e deseja usa-las nesse fluxo do usuário, marque a caixa de seleção Impor políticas de acesso condicional. Não é necessário especificar o nome de uma política. Saiba mais.
  9. Em Declarações de aplicativo, selecione em Mostrar mais. Escolha as declarações que você deseja retornar nos tokens de autorização que são enviados de volta ao seu aplicativo. Por exemplo, selecione ID de Objeto do Usuário.
  10. Selecione OK.
  11. Selecione Criar para adicionar o fluxo de usuário. Um prefixo B2C_1 é adicionado automaticamente ao nome.

Testar o fluxo de usuário

Para testar o fluxo de usuário:

  1. Selecione o fluxo de usuário que você criou. Na página de visão geral do fluxo de usuário, selecione Executar o fluxo de usuário.
  2. Para Aplicativo, selecione o aplicativo Web que você deseja testar, como aquele chamado webapp1 se você o registrou anteriormente. A URL de resposta deve ser https://jwt.ms.
  3. Selecione Executar fluxo de usuário, verifique o endereço de email da conta para a qual você deseja redefinir a senha e selecione Continuar.
  4. Altere a senha e selecione Continuar. O token é retornado para https://jwt.ms e o navegador o exibe.

Criar uma política de redefinição de senha

As políticas personalizadas são um conjunto de arquivos XML que você carrega em seu locatário do Azure AD B2C para definir percursos do usuário. Fornecemos pacotes iniciais que possuem várias políticas pré-criadas, incluindo políticas de inscrição e entrada, de redefinição de senha e de edição de perfil. Para obter mais informações, consulte Introdução às políticas personalizadas no Azure AD B2C.

Solucionar problemas de políticas personalizadas e fluxos do usuário do Azure AD B2C

Seu aplicativo precisa lidar com determinados erros provenientes do serviço do Azure B2C. Saiba como solucionar problemas de políticas personalizadas e fluxos do usuário do Azure AD B2C.

Próximas etapas

Configure umaredefinição de senha forçada.

Inscrever-se e entrar com redefinição de senha inserida.