Configurar um fluxo de reset de palavra-passe em Azure Ative Directory B2C

Antes de começar, utilize o seletor de tipo de política Escolha um tipo de política para escolher o tipo de política que está a configurar. Azure Ative Directory B2C oferece dois métodos para definir como os utilizadores interagem com as suas aplicações: através de fluxos de utilizador predefinidos ou através de políticas personalizadas totalmente configuráveis. Os passos exigidos neste artigo são diferentes para cada método.

Numa viagem de inscrição e de inscrição, um utilizador pode redefinir a sua própria palavra-passe utilizando o link Forgot your password? Este fluxo de reset de senha de autosserviço aplica-se às contas locais em Azure Ative Directory B2C (Azure AD B2C) que usam um endereço de e-mail ou um nome de utilizador com uma palavra-passe para iniciar sposição.

O fluxo de reset da palavra-passe envolve os seguintes passos:

  1. Na página de inscrição e inscrição, o utilizador seleciona o link Esqueci-se da sua palavra-passe ? Azure AD B2C inicia o fluxo de reset da palavra-passe.

  2. No próximo diálogo que aparece, o utilizador introduz o seu endereço de e-mail e, em seguida, seleciona Enviar código de verificação. Azure AD B2C envia um código de verificação para a conta de e-mail do utilizador. O utilizador copia o código de verificação a partir do e-mail, introduz o código no diálogo de redefinição de palavra-passe B2C Azure AD e, em seguida, seleciona Código de Verificação.

  3. O utilizador pode então introduzir uma nova palavra-passe. (Depois de verificado o e-mail, o utilizador ainda pode selecionar o botão De e-mail Change ; ver Ocultar o botão de e-mail de alteração.)

    Diagram that shows three dialogs in the password reset flow.

Dica

Um utilizador pode alterar a sua palavra-passe utilizando o fluxo de redefinição da palavra-passe de autosserviço se esquecer a sua palavra-passe e pretender reiniciá-la. Escolha uma destas opções de fluxo de utilizador:

  • Se um utilizador souber da sua palavra-passe e quiser alterá-la, utilize um fluxo de alteração de palavra-passe.
  • Se pretender forçar um utilizador a redefinir a sua palavra-passe (por exemplo, quando iniciar a sua sposição pela primeira vez, quando as suas palavras-passe tiverem sido reiniciadas por um administrador, ou depois de terem sido migradas para Azure AD B2C com senhas aleatórias), utilize um fluxo de redefinição de senha de força.

Esconda o botão de e-mail de alteração

Após a verificação do e-mail, o utilizador ainda pode selecionar Alterar e-mail, introduzir outro endereço de e-mail e, em seguida, repetir a verificação de e-mail. Se preferir ocultar o botão de e-mail Change , pode modificar o CSS para ocultar os elementos HTML associados no diálogo. Por exemplo, pode adicionar a seguinte entrada CSS à selfAsserted.html e personalizar a interface do utilizador utilizando modelos HTML:

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

O nome predefinido do botão de e-mail Change emselfAsserted.html é pedido de alteração. Para encontrar o nome do botão, na página de inscrição, inspecione a fonte da página utilizando uma ferramenta de navegador como Inspecionar.

Pré-requisitos

A nova experiência de reset de palavra-passe faz agora parte da política de inscrição ou de inscrição. Quando o utilizador seleciona o link Esqueceu-se da palavra-passe ? A sua aplicação já não necessita de lidar com o código de erro AADB2C90118 e não precisa de uma política separada para reiniciar a palavra-passe.

A experiência de reset da palavra-passe de autosserviço pode ser configurada para o Sign in (Recomendado) ou iniciar sposição e iniciar sposição nos fluxos de utilizador (recomendados). Se não tiver um destes fluxos de utilizador configurado, crie um fluxo de utilizador de inscrição ou de inscrição .

Para configurar a palavra-passe de autosserviço reinicializar para o fluxo do utilizador de inscrição ou de entrada:

  1. Inicie sessão no portal do Azure.
  2. Na barra de ferramentas do portal, selecione o ícone Diretórios + Subscrições .
  3. Nas definições do Portal | Diretórios + subscrições, encontre o seu Azure AD diretório B2C na lista de nomes do Diretório e, em seguida, selecione Switch.
  4. No portal do Azure, procure e selecione Azure AD B2C.
  5. Selecione fluxos de utilizador.
  6. Selecione um fluxo de utilizador de inscrição ou de inscrição (do tipo Recomendado) que pretenda personalizar.
  7. No menu em Definições, selecione Propriedades.
  8. Na configuração de palavra-passe, selecione redefinição da palavra-passe de autosserviço.
  9. Selecione Guardar.
  10. No menu esquerdo em Customize, selecionelayouts de página.
  11. Na versão layout da página, selecione 2.1.3 ou posteriormente.
  12. Selecione Guardar.

As secções seguintes descrevem como adicionar uma experiência de senha de autosserviço a uma política personalizada. A amostra baseia-se nos ficheiros de política que estão incluídos no pacote de arranque de política personalizado.

Dica

Pode encontrar uma amostra completa da política de Iniciar Sposição e Iniciar Sposição com Palavra-Passe no GitHub.

Para indicar à política que um utilizador selecionou o link Esqueceu-se da sua palavra-passe , defina uma reclamação booleana. Utilize a reivindicação para direcionar a viagem do utilizador para o perfil técnico da Palavra-Passe Esquecida . A reclamação também pode ser emitida para o token, pelo que a aplicação deteta que o utilizador assinou utilizando o fluxo de utilizador da Palavra-passe Esquecida.

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

  1. Procure o elemento Blocos de Construção . 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 reclamaçã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 de layout da página

A versão de layout da página 2.1.2 é necessária para ativar o fluxo de reset da palavra-passe de autosserviço na jornada de inscrição ou de inscrição. Para atualizar a versão de layout da página:

  1. Procure o elemento Blocos de Construção . Se o elemento não existir, adicione-o.

  2. Localizar o elemento Definições de Conteúdo . Se o elemento não existir, adicione-o.

  3. Modificar o elemento DataURI dentro do elemento ContentDefinition para ter o 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> -->
    

Adicione os perfis técnicos

Um perfil técnico de transformação de reclamações acede à isForgotPassword reclamação. O perfil técnico é referenciado mais tarde. Quando é invocado, define o valor da isForgotPassword reivindicação para true. Encontre o elemento ClaimsProviders (se o elemento não existir, crie-o) e adicione o seguinte provedor de reclamaçõ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 definição de perfil técnico SelfAsserted-LocalAccountSignin-Email.forgotPasswordLinkOverride define a troca de reclamações de redefinição de password que executa na sua jornada de utilizador.

O gestor de sessão localAccountWritePasswordUsingObjectIduseTechnicalProfileForSessionManagementSM-AAD é necessário para que o utilizador pré-forme os logins subsequentes com sucesso em condições SSO .

Adicione a sub-jornada de reset da palavra-passe

O utilizador pode agora iniciar sposição, iniciar sposição e fazer o reset da palavra-passe na sua jornada do utilizador. Para organizar melhor a viagem do utilizador, pode utilizar uma sub-viagem para lidar com o fluxo de reset da palavra-passe.

A sub-viagem é chamada da viagem do utilizador e executa os passos específicos que entregam a experiência de reset da palavra-passe ao utilizador. Utilize o Call tipo de sub-viagem para que, quando a sub-viagem estiver terminada, o controlo seja devolvido ao passo de orquestração que iniciou a sub-jornada.

Encontre o elemento SubJourneys . Se o elemento não existir, adicione-o após o elemento Jornadas do Utilizador . Em seguida, adicione a seguinte sub-viagem:

<!--
<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 a sua jornada de utilizador

Em seguida, ligue a sua palavra-passe esquecida? Consulte o ID do sub-trajeto de palavra-passe esquecido no elemento ClaimsProviderSelection do passo CombinadoSSignAndSignUp .

Se não tiver a sua própria viagem personalizada de utilizador que tenha um passo CombinadoSInSignUp , complete os seguintes passos para duplicar uma viagem de utilizador de inscrição ou de inscrição existente. Caso contrário, continue para a secção seguinte.

  1. No pacote de arranque, abra o ficheiro TrustFrameworkBase.xml .
  2. Encontre e copie todo o conteúdo do elemento UserJourney que inclui Id="SignUpOrSignIn".
  3. Abra TrustFrameworkExtensions.xml e encontre o elemento UserJourneys . Se o elemento não existir, adicione um.
  4. Crie um elemento infantil do elemento UserJourneys colando todo o conteúdo do elemento UserJourney que copiou no passo 2.
  5. Mude o nome da identificação da viagem de utilizador. Por exemplo, Id="CustomSignUpSignIn".

Na sua jornada de utilizador, pode representar a sub-viagem esquecida da Palavra-passe como uma Seleção de Reclamações. Adicionar este elemento liga a palavra-passe Esquecida?

  1. Na viagem do utilizador, encontre o elemento de passo de orquestração que inclua Type="CombinedSignInAndSignUp" ou Type="ClaimsProviderSelection". Normalmente é o primeiro passo de orquestração. O elemento ClaimsProviderSelections contém uma lista de fornecedores de identidade que um utilizador pode usar para iniciar sação. Adicione a seguinte linha:

    <ClaimsProviderSelection TargetClaimsExchangeId="ForgotPasswordExchange" />
    
  2. No próximo passo de orquestração, adicione um elemento ClaimsExchange . Adicione a seguinte linha:

    <ClaimsExchange Id="ForgotPasswordExchange" TechnicalProfileReferenceId="ForgotPassword" />
    
  3. Adicione o seguinte passo de orquestração entre o passo atual e o passo seguinte. O novo passo de orquestração que adiciona verifica se a alegação isForgotPassword existe. Se a reclamação existir, invoca a sub-viagem de reset da palavra-passe.

    <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>
    
  4. Depois de adicionar o novo passo de orquestração, renumerar os passos sequencialmente sem saltar nenhum número inteiro de 1 a N.

Desemote a jornada do utilizador para ser executado

Agora que modificou ou criou uma viagem de utilizador, na secção Do Partido De Relying, especifique a viagem que Azure AD B2C executará para esta política personalizada. No elemento RelyingParty , encontre o elemento DefaultUserJourney . Atualize o DefaultUserJourney ReferenceId para corresponder ao ID da jornada do utilizador em que adicionou as Seleções DeProvider de Reclamações.

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

Indique o fluxo de palavra-passe esquecida para a sua App

A sua aplicação poderá ter de detetar se o utilizador se inscreveu utilizando o fluxo do utilizador da Palavra-passe Esquecida. A alegação isForgotPassword contém um valor Boolean que indica que sim. A reclamação pode ser emitida no token que é enviado para o seu pedido. Se necessário, adicione isForgotPassword às reclamações de saída na secção Partido De Gestão . A sua aplicação pode verificar a alegação do isForgotPassword para determinar se o utilizador reinicia a sua palavra-passe.

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

Faça o upload da política personalizada

  1. Inicie sessão no portal do Azure.
  2. Na barra de ferramentas do portal, selecione o ícone Diretórios + Subscrições .
  3. Nas definições do Portal | Diretórios + subscrições, encontre o seu Azure AD diretório B2C na lista de nomes do Diretório e, em seguida, selecione Switch.
  4. No portal do Azure, procure e selecione Azure AD B2C.
  5. No menu em Políticas, selecione Identity Experience Framework.
  6. Selecione a política personalizada do Upload. Na seguinte ordem, faça o upload dos dois ficheiros de política que alterou:
    1. A política de extensão, por exemplo, TrustFrameworkExtensions.xml.
    2. A política partidária, por exemplo, SignUpSignIn.xml.

Teste o fluxo de reset da palavra-passe

  1. Selecione um fluxo de utilizador de inscrição ou de inscrição (tipo recomendado) que pretende testar.
  2. Selecione Executar o fluxo do utilizador.
  3. Para Aplicação, selecione a aplicação web chamada webapp1 que registou anteriormente. A URL de resposta deve mostrar https://jwt.ms.
  4. Selecione Executar o fluxo do utilizador.
  5. Na página de inscrição ou inscrição, selecione Esquecir a sua palavra-passe?.
  6. Verifique o endereço de e-mail da conta que criou anteriormente e, em seguida, selecione Continue.
  7. No diálogo que é mostrado, altere a palavra-passe para o utilizador e, em seguida, selecione Continue. O token é devolvido https://jwt.ms e o navegador exibe-o.
  8. Verifique o valor de reclamação do token de retorno é 'Previsão' . Se existir e estiver definido para true, o utilizador reiniciou a palavra-passe.

Política de reset de palavra-passe (legado)

Se a experiência de reset da palavra-passe de autosserviço não estiver ativada, a seleção deste link não ativa automaticamente um fluxo de utilizador de redefinição de palavra-passe. Em vez disso, o código de AADB2C90118 erro é devolvido à sua aplicação. A sua aplicação deve lidar com este código de erro reiniciando a biblioteca de autenticação para autenticar um fluxo de utilizador de redefinição de Azure AD B2C.

O seguinte diagrama retrata o processo:

  1. Na aplicação, o utilizador seleciona Iniciar sção. A aplicação inicia um pedido de autorização e redireciona para Azure AD B2C para que o utilizador possa terminar a sua inscrição. O pedido de autorização especifica um nome de política de inscrição ou inscrição, como B2C_1_signup_signin.

  2. O utilizador seleciona o link Esqueceu-se da sua palavra-passe? Azure AD B2C devolve o AADB2C90118 código de erro à aplicação.

  3. A aplicação trata do código de erro e inicia um novo pedido de autorização. O pedido de autorização especifica o nome da política de reset da palavra-passe, como B2C_1_pwd_reset.

    Diagram that shows the legacy password reset user flow.

Pode ver uma amostra de ASP.NET básica, que demonstra como o utilizador flui.

Criar um fluxo de utilizador de redefinição de palavra-passe

Para permitir que os utilizadores da sua aplicação repuvam as suas palavras-passe, crie um fluxo de utilizador de redefinição de palavra-passe:

  1. No portal do Azure, vá ao Azure AD visão geral do inquilino B2C.
  2. No menu esquerdo em Políticas, selecione fluxos de utilizador e, em seguida, selecione Novo fluxo de utilizador.
  3. Em Criar um fluxo de utilizador, selecione o fluxo do utilizador de reset password .
  4. Em Selecione uma versão, selecione Recomendado e, em seguida, selecione Criar.
  5. Para nome, insira um nome para o fluxo do utilizador. Por exemplo, o passwordreset1.
  6. Para os fornecedores de identidade, ative a palavra-passe Reset utilizando o nome de utilizador ou redefinir a palavra-passe através do endereço de e-mail.
  7. Em autenticação multifactor, se pretender que os utilizadores verifiquem as suas identidades utilizando um segundo método de autenticação, selecione o tipo de método e quando aplicar a autenticação multifactor. Saiba mais.
  8. Em acesso condicional, se tiver configurado políticas de acesso condicional para o seu inquilino B2C Azure AD e quiser utilizá-las neste fluxo de utilizador, selecione a caixa de verificação de políticas de acesso condicional Enforce. Não precisa especificar um nome de apólice. Saiba mais.
  9. Ao abrigo das reclamações de Aplicação, selecione Mostrar mais. Escolha as reclamações que pretende devolvidas nos tokens de autorização que são enviados de volta para o seu pedido. Por exemplo, selecione ID de Objeto do Utilizador.
  10. Selecione OK.
  11. Selecione Criar para adicionar o fluxo do utilizador. Um prefixo de B2C_1 é automaticamente adicionado ao nome.

Teste o fluxo do utilizador

Para testar o fluxo do utilizador:

  1. Selecione o fluxo de utilizador que criou. Na página de visão geral do fluxo do utilizador, selecione Executar o fluxo do utilizador.
  2. Para Aplicação, selecione a aplicação web chamada webapp1 que registou anteriormente. A URL de resposta deve ser https://jwt.ms.
  3. Selecione Executar o fluxo do utilizador, verificar o endereço de e-mail da conta que criou anteriormente e, em seguida, selecione Continue.
  4. Mude a palavra-passe e, em seguida, selecione Continue. O token é devolvido https://jwt.ms e o navegador exibe-o.

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

As políticas personalizadas são um conjunto de ficheiros XML que envia para o seu Azure AD inquilino B2C para definir viagens de utilizador. Fornecemos pacotes de iniciação que têm várias políticas pré-construídas, incluindo iniciar sessão e iniciar sessão, reset de palavra-passe e políticas de edição de perfis. Para mais informações, consulte Introdução com as políticas personalizadas em Azure AD B2C.

Resolução de problemas Azure AD fluxos de utilizadores B2C e políticas personalizadas

A sua aplicação precisa de lidar com certos erros vindos do serviço Azure B2C. Saiba como resolver problemas Azure AD fluxos de utilizador e políticas personalizadas da B2C.

Passos seguintes

Configurar uma senha de força reiniciada.

Iniciar sposição e iniciar sposição com redefinição de senha incorporada.