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

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

Em uma jornada de inscrição e login, 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 Ative Directory B2C (Azure AD B2C) que usam um endereço de email ou um nome de usuário com uma senha para entrar.

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

  1. Na página de inscrição e login, o usuário seleciona o link Esqueceu sua senha? O Azure AD B2C inicia o fluxo de redefinição de senha.
  2. Na caixa de diálogo seguinte apresentada, o utilizador introduz o respetivo endereço de e-mail 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. O utilizador pode então introduzir uma nova palavra-passe. (Depois que o e-mail for verificado, o usuário ainda pode selecionar o Botão Alterar e-mail; consulte Ocultar o botão alterar e-mail.)

Diagram that shows three dialogs in the password reset flow.

Gorjeta

Um usuário pode alterar sua senha usando o fluxo de redefinição de senha de autoatendimento se esquecer sua senha e quiser redefini-la. Você também pode escolher uma das seguintes opções de fluxo de 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 ter sido migrado 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 e-mail em selfAsserted.html é changeclaims. Para encontrar o nome do botão, na página de inscrição, inspecione a fonte da página usando uma ferramenta do navegador, como Inspecionar.

Pré-requisitos

Ocultar o botão Alterar e-mail

Depois que o e-mail for verificado, o usuário ainda poderá selecionar Alterar e-mail, inserir outro endereço de e-mail e repetir a verificação de e-mail. Se preferir ocultar o botão Alterar e-mail, você pode modificar o CSS para ocultar os elementos HTML associados na caixa de diálogo. Por exemplo, você pode adicionar a seguinte entrada CSS a 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 login. Quando o usuário seleciona o link Esqueceu sua senha? , eles são imediatamente enviados para a experiência Esqueci sua senha. Seu aplicativo não precisa mais manipular 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 para os fluxos de usuário Entrar (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 login .

Para configurar a redefinição de senha de autoatendimento para o fluxo de usuário de inscrição ou entrada:

  1. Inicie sessão 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 seu locatário do Azure AD B2C no menu Diretórios + assinaturas .
  3. No portal do Azure, procure e selecione Azure AD B2C.
  4. Selecione 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. Selecione Guardar.
  9. No menu à esquerda, em Personalizar, selecione Layouts de página.
  10. Em Versão de Layout de Página, selecione 2.1.3 ou posterior.
  11. Selecione Guardar.

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 inicial de política personalizada.

Gorjeta

Você pode encontrar uma amostra completa da política de Inscrição e Login com Redefinição de Senha no GitHub.

Para indicar à política que um usuário selecionou o link Esqueceu sua senha? , defina uma reivindicação booleana. Use a declaração para direcionar a jornada do usuário para o perfil técnico Esqueci a senha . A declaração também pode ser emitida para o token, para que o aplicativo detete que o usuário entrou usando o fluxo de usuário Esqueci a senha.

Declare suas declarações no esquema de declarações. Abra o arquivo de extensões da sua política, por exemplo, em SocialAndLocalAccounts/TrustFrameworkExtensions.xml.

  1. Procure 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 seguinte declaração 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 2.1.2 do layout de página é necessária para habilitar o fluxo de redefinição de senha de autoatendimento na jornada de inscrição ou login. Para atualizar a versão do layout da página:

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

  2. Procure 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 sinistros acessa a isForgotPassword declaração. O perfil técnico é referenciado posteriormente. Quando é invocado, define o isForgotPassword valor da reivindicação como true.

  1. Abra o arquivo de extensões da 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-Email.forgotPasswordLinkOverride define a troca de declarações de redefinição de senha que é executada na jornada do usuário.

O gerenciador de sessão LocalAccountWritePasswordUsingObjectId UseTechnicalProfileForSessionManagementSM-AAD é necessário para que o usuário pré-forme logins subsequentes com êxito sob condições de SSO.

Adicionar a subjornada de redefinição de senha

O usuário agora pode entrar, se inscrever e executar a redefinição de senha em sua jornada de usuário. Para organizar melhor a jornada do usuário, você pode usar uma subjornada para lidar com o fluxo de redefinição de senha.

A subjornada é chamada a partir da jornada do usuário e executa as etapas específicas que entregam a experiência de redefinição de senha ao usuário. Use o tipo sub journey para que, quando a subjornada for concluída, o Call controle seja retornado para a etapa de orquestração que iniciou a subjornada.

  1. Abra o arquivo de extensões da sua política, como SocialAndLocalAccounts/TrustFrameworkExtensions.xml.
  2. Encontre o elemento SubJourneys . Se o elemento não existir, adicione-o após o elemento User Journeys . Em seguida, adicione a seguinte subviagem:
<!--
<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>-->

Prepare sua jornada do usuário

Em seguida, para conectar o link Esqueceu sua senha? à subjornada Esqueci a senha, você precisará fazer referência ao ID da subjornada Esqueci a senha no elemento ClaimsProviderSelection da etapa CombinedSignInAndSignUp.

Se você não tiver sua própria jornada de usuário personalizada que tenha uma etapa CombinedSignInAndSignUp, conclua as etapas a seguir para duplicar uma jornada de usuário de inscrição ou 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"o .
  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 elemento UserJourneys colando todo o conteúdo do elemento UserJourney copiado na etapa 2.
  5. Renomeie a ID da jornada do usuário. Por exemplo, Id="CustomSignUpSignIn".

Em sua jornada de usuário, você pode representar a subjornada Esqueci a senha como um ClaimsProviderSelection. Ao adicionar esse elemento, você conecta o link Esqueceu sua senha? à subjornada Esqueceu a senha.

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

  2. Na jornada do usuário, localize o elemento da etapa de orquestração que inclui Type="CombinedSignInAndSignUp" ou Type="ClaimsProviderSelection". Geralmente é o primeiro passo da 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 adicionada verifica se a declaração isForgotPassword existe. Se a declaração existir, ela invocará a subjornada 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. Depois de adicionar a nova etapa de orquestração, renumere as etapas sequencialmente sem pular nenhum número inteiro de 1 para N.

Definir a jornada do usuário a ser executada

Agora que você modificou ou criou uma jornada do usuário, na seção Terceira Parte Confiável, especifique a jornada 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 da jornada do usuário na qual você adicionou o ClaimsProviderSelections.

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

Indique o fluxo Esqueceu-se da palavra-passe para a sua aplicação

Seu aplicativo pode precisar detetar se o usuário entrou usando o fluxo de usuário Esqueci a senha. A declaração isForgotPassword contém um valor booleano que indica que eles fizeram. A declaração pode ser emitida no token que é enviado para o seu 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. Inicie sessão 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, procure e selecione Azure AD B2C.
  4. No menu em Políticas, selecione Identity Experience Framework.
  5. Selecione Carregar política personalizada. Na seguinte ordem, carregue os arquivos de política que você alterou:
    1. O arquivo base de sua 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 exemplo, SignUpSignIn.xml.

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 de utilizador.
  3. Em Aplicativo, selecione o aplicativo Web chamado webapp1 que você registrou anteriormente. O URL de resposta deve mostrar https://jwt.ms.
  4. Selecione Executar fluxo de utilizador.
  5. Na página de inscrição ou login, selecione Esqueceu sua senha?.
  6. Verifique o endereço de e-mail da conta que criou anteriormente e, em seguida, selecione Continuar.
  7. Na caixa de diálogo mostrada, altere a senha do usuário e selecione Continuar. O token é devolvido e https://jwt.ms o navegador o exibe.
  8. Verifique o valor da declaração isForgotPassword do token de retorno. Se ela existir e estiver definida como true, o usuário redefiniu a senha.

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

Se a experiência de redefinição de senha de autoatendimento não estiver habilitada, selecionar esse link não acionará 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 manipular 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 descreve 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 código de erro para o AADB2C90118 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.

    Diagram that shows the legacy password reset user flow.

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

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

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

  1. No portal do Azure, vá para a visão geral do 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 Selecione 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. Para provedores de identidade, habilite Redefinir senha usando nome de usuário ou Redefinir senha usando endereço de email.
  7. Em 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. Não é necessário especificar um nome de política. Saiba mais.
  9. Em Declarações de aplicativo, selecione 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 Utilizador.
  10. Selecione OK.
  11. Selecione Criar para adicionar o fluxo de usuário. Um prefixo de B2C_1 é adicionado automaticamente ao nome.

Testar o fluxo do 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. Em Aplicativo, selecione o aplicativo Web que deseja testar, como o chamado webapp1 , caso tenha registrado isso anteriormente. O URL de resposta deve ser https://jwt.ms.
  3. Selecione Executar fluxo de usuário, verifique o endereço de e-mail da conta para a qual você deseja redefinir a senha e selecione Continuar.
  4. Altere a palavra-passe e, em seguida, selecione Continuar. O token é devolvido e https://jwt.ms o navegador o exibe.

Criar uma política de reposição de palavra-passe

As políticas personalizadas são um conjunto de arquivos XML que você carrega no locatário do Azure AD B2C para definir as jornadas do usuário. Fornecemos pacotes iniciais com várias políticas pré-criadas, incluindo inscrição e login, redefinição de senha e políticas de 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 e políticas personalizadas do Azure AD B2C.

Próximos passos

Configure uma redefinição forçada de senha.

Registe-se e inicie sessão com reposição de palavra-passe incorporada.