Konfigurowanie przepływu resetowania hasła w usłudze Azure Active Directory B2C

Przed rozpoczęciem użyj selektora Wybierz typ zasad, aby wybrać typ konfigurowanych zasad. Usługa Azure Active Directory B2C oferuje dwie metody definiowania sposobu interakcji użytkowników z aplikacjami: za pomocą wstępnie zdefiniowanych przepływów użytkowników lub w pełni konfigurowalnych zasad niestandardowych. Kroki wymagane w tym artykule są różne dla każdej metody.

W podróży do rejestracji i logowania użytkownik może zresetować własne hasło przy użyciu linku Nie pamiętasz hasła? Ten przepływ samoobsługowego resetowania hasła dotyczy kont lokalnych w usłudze Azure Active Directory B2C (Azure AD B2C), które używają adresu e-mail lub nazwy użytkownika z hasłem do logowania.

Przepływ resetowania hasła obejmuje następujące kroki:

  1. Na stronie rejestracji i logowania użytkownik wybierze link Nie pamiętasz hasła? Usługa Azure AD B2C inicjuje przepływ resetowania hasła.
  2. W następnym wyświetlonym oknie dialogowym użytkownik wprowadza swój adres e-mail, a następnie wybiera pozycję Wyślij kod weryfikacyjny. Usługa Azure AD B2C wysyła kod weryfikacyjny do konta e-mail użytkownika. Użytkownik kopiuje kod weryfikacyjny z wiadomości e-mail, wprowadza kod w oknie dialogowym resetowania hasła usługi Azure AD B2C, a następnie wybiera pozycję Weryfikuj kod.
  3. Użytkownik może następnie wprowadzić nowe hasło. (Po zweryfikowaniu wiadomości e-mail użytkownik nadal może wybrać Zmień przycisk poczty e-mail ; zobacz Ukryj przycisk zmień wiadomość e-mail).

Diagram that shows three dialogs in the password reset flow.

Napiwek

Użytkownik może zmienić swoje hasło przy użyciu przepływu samoobsługowego resetowania hasła, jeśli zapomni swoje hasło i chce go zresetować. Możesz również wybrać jedną z następujących opcji przepływu użytkownika:

  • Jeśli użytkownik zna swoje hasło i chce go zmienić, użyj przepływu zmiany hasła.
  • Jeśli chcesz wymusić, aby użytkownik zresetował swoje hasło (na przykład po pierwszym zalogowaniu się, gdy hasła zostały zresetowane przez administratora lub po migracji do usługi Azure AD B2C z losowymi hasłami), użyj przepływu wymuszania resetowania hasła.

Domyślna nazwa przycisku Zmień adres e-mail w pliku selfAsserted.html to changeclaims. Aby znaleźć nazwę przycisku, na stronie rejestracji sprawdź źródło strony przy użyciu narzędzia przeglądarki, takiego jak Inspekcja.

Wymagania wstępne

Ukryj przycisk zmień wiadomość e-mail

Po zweryfikowaniu wiadomości e-mail użytkownik nadal może wybrać pozycję Zmień adres e-mail, wprowadzić inny adres e-mail, a następnie powtórzyć weryfikację wiadomości e-mail. Jeśli wolisz ukryć przycisk Zmień wiadomość e-mail , możesz zmodyfikować arkusz CSS, aby ukryć skojarzone elementy HTML w oknie dialogowym. Możesz na przykład dodać następujący wpis CSS do pliku selfAsserted.html i dostosować interfejs użytkownika przy użyciu szablonów HTML:

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

Nowe środowisko resetowania hasła jest teraz częścią zasad rejestracji lub logowania. Gdy użytkownik wybierze link Nie pamiętasz hasła? zostanie natychmiast wysłany do środowiska Nie pamiętam hasła. Aplikacja nie musi już obsługiwać kodu błędu AADB2C90118 i nie potrzebujesz oddzielnych zasad resetowania hasła.

Środowisko samoobsługowego resetowania hasła można skonfigurować dla przepływów użytkownika Logowanie (zalecane) lub Rejestrowanie się i logowanie (zalecane). Jeśli nie masz skonfigurowanego jednego z tych przepływów użytkownika, utwórz przepływ rejestracji lub logowania użytkownika.

Aby skonfigurować samoobsługowe resetowanie hasła dla przepływu użytkownika rejestracji lub logowania:

  1. Zaloguj się w witrynie Azure Portal.
  2. Jeśli masz dostęp do wielu dzierżaw, wybierz ikonę Ustawienia w górnym menu, aby przełączyć się do dzierżawy usługi Azure AD B2C z menu Katalogi i subskrypcje.
  3. W witrynie Azure Portal wyszukaj i wybierz pozycję Azure AD B2C.
  4. Wybierz pozycję Przepływy użytkownika.
  5. Wybierz przepływ użytkownika rejestracji lub logowania (typ Zalecane), który chcesz dostosować.
  6. W menu w obszarze Ustawienia wybierz pozycję Właściwości.
  7. W obszarze Konfiguracja hasła wybierz pozycję Samoobsługowe resetowanie hasła.
  8. Wybierz pozycję Zapisz.
  9. W menu po lewej stronie w obszarze Dostosowywanie wybierz pozycję Układy strony.
  10. W obszarze Wersja układu strony wybierz wersję 2.1.3 lub nowszą.
  11. Wybierz pozycję Zapisz.

W poniższych sekcjach opisano sposób dodawania środowiska samoobsługowego hasła do zasad niestandardowych. Przykład jest oparty na plikach zasad uwzględnionych w niestandardowym pakiecie startowym zasad.

Napiwek

Pełny przykład zasad tworzenia konta i logowania przy użyciu resetowania haseł można znaleźć w witrynie GitHub.

Aby wskazać zasady wybrane przez użytkownika linku Nie pamiętasz hasła? zdefiniuj oświadczenie logiczne. Użyj oświadczenia, aby skierować podróż użytkownika do profilu technicznego Nie pamiętam hasła . Oświadczenie można również wydać do tokenu, aby aplikacja wykryła, że użytkownik zalogował się przy użyciu przepływu użytkownika Nie pamiętam hasła.

Zadeklaruj swoje oświadczenia w schemacie oświadczeń. Otwórz plik rozszerzeń zasad, na przykład w pliku SocialAndLocalAccounts/TrustFrameworkExtensions.xml.

  1. Wyszukaj element BuildingBlocks. Jeśli element nie istnieje, dodaj go.

  2. Znajdź element ClaimsSchema . Jeśli element nie istnieje, dodaj go.

  3. Dodaj następujące oświadczenie do elementu 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> -->
    

Uaktualnianie wersji układu strony

Układ strony w wersji 2.1.2 jest wymagany do włączenia samoobsługowego przepływu resetowania hasła w ramach procesu rejestracji lub logowania. Aby uaktualnić wersję układu strony:

  1. Otwórz plik podstawowy zasad, na przykład SocialAndLocalAccounts/TrustFrameworkBase.xml.

  2. Wyszukaj element BuildingBlocks. Jeśli element nie istnieje, dodaj go.

  3. Znajdź element ContentDefinitions. Jeśli element nie istnieje, dodaj go.

  4. Zmodyfikuj element DataURI w elemecie ContentDefinition , aby mieć identyfikator api.signuporsignin:

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

Dodawanie profilów technicznych

Profil techniczny przekształcania oświadczeń uzyskuje isForgotPassword dostęp do oświadczenia. Profil techniczny zostanie później odwołany. Po wywołaniu ustawia wartość isForgotPassword oświadczenia na truewartość .

  1. Otwórz plik rozszerzeń zasad, na przykład w pliku SocialAndLocalAccounts/TrustFrameworkExtensions.xml.
  2. Znajdź element ClaimsProviders (jeśli element nie istnieje, utwórz go), a następnie dodaj następującego dostawcę oświadczeń:
<!-- 
<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> -->

Ustawienie profilu technicznego SelfAsserted-LocalAccountSignin-Email.forgotPasswordLinkOverride definiuje wymianę oświadczeń resetowania hasła wykonywaną w podróży użytkownika.

Profil techniczny LocalAccountWritePasswordUsingObjectId UseTechnicalProfileForSessionManagementSM-AAD session manager jest wymagany, aby użytkownik pomyślnie sformułował kolejne logowania w warunkach logowania jednokrotnego.

Dodawanie podrzędnej podróży resetowania hasła

Użytkownik może teraz zalogować się, zarejestrować się i zresetować hasło w podróży użytkownika. Aby lepiej zorganizować podróż użytkownika, możesz użyć podmiejsowej podróży do obsługi przepływu resetowania hasła.

Podróż podrzędna jest wywoływana z podróży użytkownika i wykonuje określone kroki, które zapewniają użytkownikowi środowisko resetowania hasła. Użyj podróży podrzędnej Call typu, aby po zakończeniu podróży podrzędnej kontrolować jest zwracany do kroku aranżacji, który zainicjował podróż podrzędną.

  1. Otwórz plik rozszerzeń zasad, taki jak SocialAndLocalAccounts/TrustFrameworkExtensions.xml.
  2. Znajdź element SubJourneys. Jeśli element nie istnieje, dodaj go po elemecie User Journeys . Następnie dodaj następującą podróż podrzędną:
<!--
<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>-->

Przygotowywanie podróży użytkownika

Aby połączyć link Nie pamiętasz hasła? z podjeżdżeniem Nie pamiętasz hasła, musisz odwołać się do identyfikatora podrzędnego nie pamiętam hasła w elemencie ClaimsProviderSelection kroku CombinedSignInAndSignUp.

Jeśli nie masz własnej niestandardowej podróży użytkownika, która ma krok CombinedSignInAndSignUp , wykonaj następujące kroki, aby zduplikować istniejącą podróż użytkownika rejestracji lub logowania. W przeciwnym razie przejdź do następnej sekcji.

  1. W pakiecie startowym otwórz plik TrustFrameworkBase.xml , taki jak SocialAndLocalAccounts/TrustFrameworkBase.xml.
  2. Znajdź i skopiuj całą zawartość elementu UserJourney , który zawiera Id="SignUpOrSignIn"element .
  3. Otwórz plik TrustFrameworkExtensions.xml , taki jak SocialAndLocalAccounts/TrustFrameworkExtensions.xml, i znajdź element UserJourneys . Jeśli element nie istnieje, utwórz go.
  4. Utwórz element podrzędny elementu UserJourneys , wklejając całą zawartość elementu UserJourney skopiowany w kroku 2.
  5. Zmień nazwę identyfikatora podróży użytkownika. Na przykład Id="CustomSignUpSignIn".

W podróży użytkownika możesz reprezentować podrzędną podróż Nie pamiętam hasła jako ClaimsProviderSelection. Dodając ten element, połączysz link Nie pamiętasz hasła? z podsiecią Nie pamiętam hasła.

  1. Otwórz plik TrustFrameworkExtensions.xml, taki jak SocialAndLocalAccounts/TrustFrameworkExtensions.xml.

  2. W podróży użytkownika znajdź element kroku aranżacji, który zawiera Type="CombinedSignInAndSignUp" element lub Type="ClaimsProviderSelection". Zazwyczaj jest to pierwszy krok aranżacji. Element ClaimsProviderSelections zawiera listę dostawców tożsamości, których użytkownik może użyć do logowania. Dodaj następujący wiersz:

    <ClaimsProviderSelection TargetClaimsExchangeId="ForgotPasswordExchange" />
    
  3. W następnym kroku aranżacji dodaj element ClaimsExchange , dodając następujący wiersz:

    <ClaimsExchange Id="ForgotPasswordExchange" TechnicalProfileReferenceId="ForgotPassword" />
    
  4. Dodaj następujący krok aranżacji między bieżącym krokiem a następnym krokiem. Nowy krok aranżacji, który dodajesz, sprawdza, czy istnieje oświadczenie isForgotPassword . Jeśli oświadczenie istnieje, wywołuje podrzędną podróż resetowania hasła.

    <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. Po dodaniu nowego kroku aranżacji ponownie przenumeruj kroki sekwencyjnie bez pomijania liczb całkowitych z zakresu od 1 do N.

Ustawianie podróży użytkownika do wykonania

Po zmodyfikowaniu lub utworzeniu podróży użytkownika w sekcji Jednostka uzależniona określ podróż wykonywaną przez usługę Azure AD B2C dla tych zasad niestandardowych.

  1. Otwórz plik zawierający element jednostki uzależnionej, taki jak SocialAndLocalAccounts/SignUpOrSignin.xml.

  2. W elemecie RelyingParty znajdź element DefaultUserJourney .

  3. Zaktualizuj parametr DefaultUserJourney ReferenceId , aby był zgodny z identyfikatorem podróży użytkownika, w którym dodano wybory ClaimsProviderS.

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

Wskazuje przepływ nie pamiętasz hasła do aplikacji

Aplikacja może wymagać wykrycia, czy użytkownik zalogował się przy użyciu przepływu nie pamiętasz hasła. Oświadczenie isForgotPassword zawiera wartość logiczną wskazującą, że tak. Oświadczenie można wydać w tokenie wysyłanym do aplikacji. W razie potrzeby dodaj element isForgotPassword do oświadczeń wyjściowych w sekcji Jednostki uzależnionej. Aplikacja może sprawdzić oświadczenie isForgotPassword , aby określić, czy użytkownik resetuje swoje hasło.

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

Przekazywanie zasad niestandardowych

  1. Zaloguj się w witrynie Azure Portal.
  2. Jeśli masz dostęp do wielu dzierżaw, wybierz ikonę Ustawienia w górnym menu, aby przełączyć się do dzierżawy usługi Azure AD B2C z menu Katalogi i subskrypcje.
  3. W witrynie Azure Portal wyszukaj i wybierz pozycję Azure AD B2C.
  4. W menu w obszarze Zasady wybierz pozycję Identity Experience Framework.
  5. Wybierz pozycję Przekaż zasady niestandardowe. W następującej kolejności przekaż zmienione pliki zasad:
    1. Plik podstawowy zasad, na przykład TrustFrameworkBase.xml.
    2. Zasady rozszerzenia, na przykład TrustFrameworkExtensions.xml.
    3. Zasady jednostki uzależnionej, na przykład SignUpSignIn.xml.

Testowanie przepływu resetowania hasła

  1. Wybierz przepływ użytkownika rejestracji lub logowania (zalecany typ), który chcesz przetestować.
  2. Wybierz Uruchom przepływ użytkownika.
  3. W polu Aplikacja wybierz aplikację internetową o nazwie webapp1 , która została zarejestrowana wcześniej. Adres URL odpowiedzi powinien zawierać wartość https://jwt.ms.
  4. Wybierz Uruchom przepływ użytkownika.
  5. Na stronie rejestracji lub logowania wybierz pozycję Nie pamiętasz hasła?.
  6. Sprawdź adres e-mail utworzonego wcześniej konta, a następnie wybierz pozycję Kontynuuj.
  7. W wyświetlonym oknie dialogowym zmień hasło użytkownika, a następnie wybierz pozycję Kontynuuj. Token zostanie zwrócony i https://jwt.ms zostanie wyświetlony w przeglądarce.
  8. Sprawdź wartość oświadczenia zwrotnego tokenu toForgotPassword . Jeśli istnieje i ma ustawioną wartość true, użytkownik zresetuje hasło.

Zasady resetowania hasła (starsza wersja)

Jeśli funkcja samoobsługowego resetowania hasła nie jest włączona, wybranie tego linku nie spowoduje automatycznego wyzwolenia przepływu użytkownika resetowania hasła. Zamiast tego kod AADB2C90118 błędu jest zwracany do aplikacji. Aplikacja musi obsługiwać ten kod błędu przez ponowne inicjowanie biblioteki uwierzytelniania w celu uwierzytelnienia przepływu użytkownika resetowania hasła usługi Azure AD B2C.

Na poniższym diagramie przedstawiono proces:

  1. W aplikacji użytkownik wybierze pozycję Zaloguj. Aplikacja inicjuje żądanie autoryzacji i przekierowuje do usługi Azure AD B2C, aby użytkownik mógł zakończyć logowanie. Żądanie autoryzacji określa nazwę zasad rejestracji lub logowania, taką jak B2C_1_signup_signin.

  2. Użytkownik wybierze link Nie pamiętasz hasła? Usługa Azure AD B2C zwraca kod błędu AADB2C90118 do aplikacji.

  3. Aplikacja obsługuje kod błędu i inicjuje nowe żądanie autoryzacji. Żądanie autoryzacji określa nazwę zasad resetowania hasła, taką jak B2C_1_pwd_reset.

    Diagram that shows the legacy password reset user flow.

Możesz zobaczyć podstawowy przykład ASP.NET, który pokazuje sposób łączenia przepływów użytkowników.

Tworzenie przepływu użytkownika dotyczącego resetowania haseł

Aby umożliwić użytkownikom aplikacji resetowanie haseł, utwórz przepływ użytkownika resetowania haseł:

  1. W witrynie Azure Portal przejdź do przeglądu dzierżawy usługi Azure AD B2C.
  2. W menu po lewej stronie w obszarze Zasady wybierz pozycję Przepływy użytkownika, a następnie wybierz pozycję Nowy przepływ użytkownika.
  3. W obszarze Tworzenie przepływu użytkownika wybierz przepływ resetowania hasła użytkownika.
  4. W obszarze Wybierz wersję wybierz pozycję Zalecane, a następnie wybierz pozycję Utwórz.
  5. W polu Nazwa wprowadź nazwę przepływu użytkownika. Na przykład passwordreset1.
  6. W przypadku dostawców tożsamości włącz opcję Resetuj hasło przy użyciu nazwy użytkownika lub Resetowanie hasła przy użyciu adresu e-mail.
  7. W obszarze Uwierzytelnianie wieloskładnikowe, jeśli chcesz wymagać od użytkowników zweryfikowania tożsamości przy użyciu drugiej metody uwierzytelniania, wybierz typ metody i kiedy wymusić uwierzytelnianie wieloskładnikowe. Dowiedz się więcej.
  8. W obszarze Dostęp warunkowy, jeśli skonfigurowano zasady dostępu warunkowego dla dzierżawy usługi Azure AD B2C i chcesz ich używać w tym przepływie użytkownika, zaznacz pole wyboru Wymuszaj zasady dostępu warunkowego. Nie musisz określać nazwy zasad. Dowiedz się więcej.
  9. W obszarze Oświadczenia aplikacji wybierz pozycję Pokaż więcej. Wybierz oświadczenia, które mają zostać zwrócone w tokenach autoryzacji, które są wysyłane z powrotem do aplikacji. Na przykład wybierz pozycję Identyfikator obiektu użytkownika.
  10. Wybierz przycisk OK.
  11. Wybierz pozycję Utwórz , aby dodać przepływ użytkownika. Prefiks B2C_1 jest automatycznie dodawany do nazwy.

Testowanie przepływu użytkownika

Aby przetestować przepływ użytkownika:

  1. Wybierz utworzony przepływ użytkownika. Na stronie przeglądu przepływu użytkownika wybierz pozycję Uruchom przepływ użytkownika.
  2. W polu Aplikacja wybierz aplikację internetową, którą chcesz przetestować, na przykład aplikację internetową o nazwie webapp1 , jeśli zarejestrowano ją wcześniej. Adres URL odpowiedzi powinien mieć wartość https://jwt.ms.
  3. Wybierz pozycję Uruchom przepływ użytkownika, sprawdź adres e-mail konta, dla którego chcesz zresetować hasło, a następnie wybierz pozycję Kontynuuj.
  4. Zmień hasło, a następnie wybierz pozycję Kontynuuj. Token zostanie zwrócony i https://jwt.ms zostanie wyświetlony w przeglądarce.

Tworzenie zasad resetowania haseł

Zasady niestandardowe to zestaw plików XML przekazywanych do dzierżawy usługi Azure AD B2C w celu zdefiniowania podróży użytkowników. Udostępniamy pakiety startowe, które mają kilka wstępnie utworzonych zasad, w tym rejestrację i logowanie, resetowanie hasła i edytowanie profilów. Aby uzyskać więcej informacji, zobacz Wprowadzenie do zasad niestandardowych w usłudze Azure AD B2C.

Rozwiązywanie problemów z przepływami użytkowników usługi Azure AD B2C i zasadami niestandardowymi

Aplikacja musi obsługiwać niektóre błędy pochodzące z usługi Azure B2C. Dowiedz się , jak rozwiązywać problemy z przepływami użytkowników i zasadami niestandardowymi usługi Azure AD B2C.

Następne kroki

Skonfiguruj wymuszone resetowanie hasła.

Zarejestruj się i zaloguj się przy użyciu osadzonego resetowania hasła.