Compartilhar via


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

Importante

A partir de 1º de maio de 2025, o Azure AD B2C não estará mais disponível para compra para novos clientes. Saiba mais em nossas perguntas frequentes.

Antes de começar, use o seletor Escolher um tipo de política na parte superior desta página 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 sua própria senha usando o link Esqueceu sua senha. Esse fluxo de redefinição de senha de autoatendimento se aplica a contas locais no Azure AD B2C (Azure Active Directory B2C) que usam um endereço de email ou um nome de usuário com uma senha para entrar.

Dica

Um usuário pode alterar sua senha usando o fluxo de redefinição de senha de autoatendimento se esquecer a senha e desejar redefini-la. Você também pode escolher uma das seguintes opções de fluxo de usuário para alterar a senha de um usuário:

  • Se um usuário souber sua senha e quiser alterá-la, use um fluxo de alteração de senha.
  • Se você quiser forçar um usuário a redefinir sua senha (por exemplo, quando ele entrar pela primeira vez, quando suas senhas tiverem sido redefinidas por um administrador ou depois de terem sido migradas para o Azure AD B2C com senhas aleatórias), use um fluxo de redefinição de senha forçada .

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

  1. Na página de inscrição e entrada, o usuário seleciona o link Esqueceu sua senha. O Azure AD B2C inicia o fluxo de redefinição de senha.
  2. Na próxima caixa de diálogo exibida, o usuário insere seu endereço de email e, em seguida, seleciona Enviar código de verificação. O Azure AD B2C envia um código de verificação para a conta de email do usuário. O usuário copia o código de verificação do email, insere o código na caixa de diálogo de redefinição de senha do Azure AD B2C e seleciona Verificar código.
  3. Em seguida, o usuário pode inserir uma nova senha. (Depois que o email for verificado, o usuário ainda poderá selecionar o botão Alterar email; consulte Ocultar o botão Alterar email se você quiser removê-lo.)

Diagrama que mostra três caixas de diálogo no fluxo de redefinição de senha.

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

Pré-requisitos

  • Os usuários B2C precisam ter um método de autenticação especificado para redefinição de senha de autoatendimento. Selecione o Usuário B2C, no menu à esquerda em Gerenciar, selecione Métodos de Autenticação. Verifique se as informações de contato de autenticação estão definidas. Os usuários B2C criados por meio de um fluxo de inscrição têm esse conjunto por padrão. Para os usuários criados por meio do Portal do Azure ou da API do Graph, você precisa definir informações de contato de autenticação para que o SSPR funcione.

A nova experiência de redefinição de senha agora faz parte da política de inscrição ou entrada. Quando o usuário seleciona o link Esqueceu sua senha, ele é enviado imediatamente para a experiência de Senha Esquecida. Seu aplicativo não precisa mais lidar com o código de erro AADB2C90118 e você não precisa de uma política separada para redefinição de senha.

A experiência de redefinição de senha de autoatendimento pode ser configurada nos fluxos de usuário Entrar (Recomendado) ou Inscrever-se e entrar (Recomendado). Se você não tiver um desses fluxos de usuário configurados, crie um fluxo de usuário de registro ou de login.

Para configurar a redefinição de senha por autoatendimento no fluxo de inscrição ou login de usuário:

  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 tipo Recomendado) que você deseja personalizar.
  6. No menu em Configurações, selecione Propriedades.
  7. Em Configuração de senha, selecione Redefinição de senha de autoatendimento.
  8. Clique em Salvar.
  9. No menu à esquerda, em Personalizar, selecioneLayouts de página.
  10. Na Versão de Layout de Página, selecione 2.1.3 ou posterior.
  11. Clique em Salvar.

As seções a seguir descrevem como adicionar uma experiência de senha de autoatendimento a uma política personalizada. O exemplo é baseado nos arquivos de política incluídos no pacote de inicialização de política personalizado.

Dica

Você pode encontrar um exemplo completo da política de Inscrição e Entrada com Redefinição de Senha no GitHub.

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 reivindicação também pode ser emitida para o token, de modo que o aplicativo detecte que o usuário fez login usando o fluxo de usuário Esqueci minha senha.

Declare suas declarações no esquema de declarações. Abra o arquivo de extensões da 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 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> -->
    

Atualizar a versão do 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 de autoatendimento no percurso de inscrição ou entrada. Para atualizar a versão do layout da página:

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

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

  3. Localize o elemento ContentDefinitions . 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 ele é invocado, ele define o valor da isForgotPassword declaração como true.

  1. Abra o arquivo de extensões da 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> -->

O 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 LocalAccountWritePasswordUsingObjectId e o gerenciador de sessão UseTechnicalProfileForSessionManagementSM-AAD são necessários para que o usuário realize com êxito logins subsequentes em condições de SSO.

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

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

O sub-percurso é chamado pelo 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 sub-percurso do tipo Call para que, ao ser concluído, o controle retorne à etapa de orquestração que o iniciou.

  1. Abra o arquivo de extensões da política, como SocialAndLocalAccounts/TrustFrameworkExtensions.xml.
  2. Localize o elemento SubJourneys . Se o elemento não existir, adicione-o após o elemento User Journeys . 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 sua senha? ao sub-percurso Esqueci a Senha, basta referenciar o ID do sub-percurso Esqueci a Senha 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, continue 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 TrustFrameworkExtensions.xml arquivo, como SocialAndLocalAccounts/TrustFrameworkExtensions.xml, e localize o elemento UserJourneys . Se o elemento não existir, crie-o.
  4. Crie um elemento filho do elemento UserJourneys colando todo o conteúdo do elemento UserJourney copiado na etapa 2.
  5. Renomeie a ID do percurso do usuário. Por exemplo, Id="CustomSignUpSignIn".

No percurso do usuário, você pode declara o sub-percurso Esqueci a senha como umaClaimsProviderSelection. Ao adicionar esse elemento, você conectará o link Esqueceu sua senha? para o sub-percurso Esqueci minha senha.

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

  2. No percurso do usuário, localize o elemento da etapa de orquestração que inclui Type="CombinedSignInAndSignUp" ou Type="ClaimsProviderSelection". Normalmente é a primeira etapa de orquestração. O elemento ClaimsProviderSelections contém uma lista de provedores de identidade que um usuário pode usar para entrar. 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 de orquestração entre a etapa atual e a próxima etapa. A nova etapa de orquestração que você adiciona verifica se a declaração isForgotPassword existe. Se a declaração existir, ela invocará a sub-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 nas 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ção Terceira Parte Confiável , especifique o percurso que o Azure AD B2C executará para essa política personalizada.

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

  2. No elemento RelyingParty, localize o elemento DefaultUserJourney.

  3. Atualize o DefaultUserJourney ReferenceId para corresponder à ID do percurso do usuário no qual você adicionou ClaimsProviderSelections.

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

Indique o fluxo de Esqueci minha senha no seu aplicativo

Talvez o aplicativo precise detectar se o usuário entrou usando o fluxo de usuário de Senha Esquecida. A declaração isForgotPassword contém um valor booliano que indica que eles o fizeram. A declaração pode ser emitida no token enviado ao 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 redefine sua 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. Na ordem a seguir, carregue os arquivos de política que você alterou:
    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.

Ocultar o botão alterar email (opcional)

Depois que o email for verificado, o usuário ainda poderá selecionar Alterar email, inserir outro endereço de email e repetir a verificação de email. Se preferir ocultar o botão Alterar email , modifique o CSS para ocultar os elementos HTML associados na caixa de diálogo. Por exemplo, você pode adicionar a seguinte entrada CSS para selfAsserted.html e personalizar a interface do usuário usando modelos HTML:

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

Testar o fluxo de redefinição de senha

  1. Selecione um fluxo de usuário de inscrição ou entrada (tipo recomendado) que você deseja testar.
  2. Selecione Executar fluxo do usuário.
  3. Para o Aplicativo, selecione o aplicativo Web chamado webapp1 que você registrou anteriormente. A URL de resposta deve mostrar https://jwt.ms.
  4. Selecione Executar fluxo do usuário.
  5. Na página de inscrição ou entrada, selecione 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 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 estiver 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 de autoatendimento não estiver habilitada, a seleção desse link não disparará automaticamente um fluxo de usuário de redefinição de senha. Em vez disso, o código AADB2C90118 de erro é retornado ao seu aplicativo. Seu aplicativo deve lidar com esse código de erro reinicializando a biblioteca de autenticação para autenticar um fluxo de usuário de redefinição de senha do 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 para o Azure AD B2C para que o usuário possa concluir a entrada. A solicitação de autorização especifica um nome de política de inscrição ou entrada, como B2C_1_signup_signin.
  2. O usuário seleciona o link Esqueceu sua senha. O Azure AD B2C retorna o AADB2C90118 código de erro para o aplicativo.
  3. O aplicativo manipula 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, como B2C_1_pwd_reset.

Diagrama que mostra o fluxo de usuário de redefinição de senha herdado com etapas numeradas.

Você pode ver uma demonstração básica de como os fluxos de usuários se vinculam em nosso exemplo de ASP.NET.

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

Para permitir que os usuários do aplicativo redefinam suas senhas, 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ário e, em seguida, selecione Novo fluxo de usuário.
  3. Em Criar um fluxo de usuário, selecione o fluxo de usuário de redefinição de senha .
  4. Em Selecionar uma versão, selecione Recomendado e, em seguida, selecione Criar.
  5. Para Nome, insira um nome para o fluxo de usuário. Por exemplo, passwordreset1.
  6. Para provedores de identidade, habilite Redefinir senha usando nome de usuário ou Redefinir senha usando o endereço de email.
  7. Na autenticação multifator, se você quiser exigir que os usuários verifiquem suas identidades usando um segundo método de autenticação, selecione o tipo de método e quando impor a autenticação multifator. Saiba mais.
  8. Em acesso condicional, se você configurou políticas de acesso condicional para seu locatário do Azure AD B2C e deseja usá-las nesse fluxo de usuário, marque a caixa de seleção Impor políticas de acesso condicional . Você não precisa especificar um nome de 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 A ID do Objeto do Usuário.
  10. Selecione OK.
  11. Selecione Criar para adicionar o fluxo do usuário. Um prefixo de B2C_1 é adicionado automaticamente ao nome.

Testar o fluxo de usuário

Para testar o fluxo do usuário:

  1. Selecione o fluxo de usuário que você criou. Na página de visão geral do fluxo do usuário, selecione Executar fluxo do usuário.
  2. Para o Aplicativo, selecione o aplicativo Web que você deseja testar, como aquele chamado webapp1 se você registrou isso anteriormente. A URL de Resposta deve ser https://jwt.ms.
  3. Selecione Executar fluxo do 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 no locatário do Azure AD B2C para definir percursos do usuário. Fornecemos pacotes iniciais que têm várias políticas predefinidas, incluindo inscrição e login, redefinição de senha e edição de perfil. Para obter mais informações, consulte Introdução às políticas personalizadas no Azure AD B2C.

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

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

Configure umaredefinição de senha forçada.

Inscreva-se e faça login com redefinição de senha integrada.