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

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

Podczas rejestracji i logowaniaużytkownik może zresetować własne hasło, korzystając z linku Nie pamiętasz hasła?. Ten przepływ samoobsługowego resetowania hasła ma zastosowanie do 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 wybiera link Nie pamiętam hasła?. 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. Azure AD B2C wysyła kod weryfikacyjny na konto e-mail użytkownika. Użytkownik kopiuje kod weryfikacyjny z wiadomości e-mail, wprowadza kod w oknie dialogowym resetowania Azure AD B2C hasła, 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 może nadal wybrać przycisk Zmień adres e-mail; zobacz Przycisk Ukryj zmień adres e-mail).

    Diagram przedstawiający trzy okna dialogowe w przepływie resetowania hasła.

Porada

Użytkownik może zmienić swoje hasło za pomocą przepływu samoobsługowego resetowania hasła, jeśli zapomni hasło i chce je zresetować. Wybierz jedną z tych opcji przepływu użytkownika:

  • Jeśli użytkownik zna swoje hasło i chce je zmienić, użyj przepływu zmiany hasła.
  • Jeśli chcesz wymusić na użytkowniku zresetowanie swojego hasła (na przykład gdy loguje się po raz pierwszy, gdy jego hasła zostały zresetowane przez administratora lub po migracji do usługi Azure AD B2C przy użyciu losowych haseł), użyj przepływu wymuszania resetowania hasła.

Ukryj przycisk zmiany wiadomości e-mail

Po zweryfikowaniu wiadomości e-mail użytkownik może nadal 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ń adres e-mail, możesz zmodyfikować arkusz CSS, aby ukryć skojarzone elementy HTML w oknie dialogowym. Na przykład możesz dodać następujący wpis CSS do pliku selfAsserted.html dostosować interfejs użytkownika przy użyciu szablonów HTML:

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

Domyślną nazwą przycisku Zmień adres e-mail wselfAsserted.html jest changeclaims. Aby znaleźć nazwę przycisku, na stronie rejestracji sprawdź źródło strony przy użyciu narzędzia przeglądarki, takiego jak Inspect.

Wymagania wstępne

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 strony Nie pamiętam hasła. Aplikacja nie musi już obsługiwać kodu błędu AADB2C90118i 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 Rejestracja i logowanie (zalecane). Jeśli nie masz ustawionego jednego z tych przepływów użytkownika, utwórz przepływ użytkownika tworzenia konta lub logowania.

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

  1. Zaloguj się w witrynie Azure Portal.
  2. Na pasku narzędzi portalu wybierz ikonę Katalogi i subskrypcje.
  3. W ustawieniach portalu | W okienku Katalogi i subskrypcje znajdź katalog Azure AD B2C na liście Nazwa katalogu, a następnie wybierz pozycję Przełącz.
  4. W Azure Portal wyszukaj i wybierz pozycję Azure AD B2C.
  5. Wybierz pozycję Przepływy użytkownika.
  6. Wybierz przepływ użytkownika rejestracji lub logowania (typu Zalecane), który chcesz dostosować.
  7. W menu w obszarze Ustawienia wybierz pozycję Właściwości.
  8. W obszarze Konfiguracja hasła wybierz pozycję Samoobsługowe resetowanie hasła.
  9. Wybierz pozycję Zapisz.
  10. W menu po lewej stronie w obszarze Dostosowywanie wybierz pozycję Układy stron.
  11. W opcji Wersja układu strony wybierz pozycję 2.1.3 lub nowszą.
  12. Wybierz pozycję Zapisz.

W poniższych sekcjach opisano sposób dodawania samoobsługowego środowiska haseł do zasad niestandardowych. Przykład jest oparty na plikach zasad zawartych w pakiecie startowym zasad niestandardowych.

Porada

Pełny przykład zasad rejestracji i logowania przy użyciu resetowania hasła można znaleźć w GitHub.

Aby wskazać zasadom, że użytkownik wybrał link 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że również zostać wystawione dla tokenu, więc aplikacja wykrywa, że użytkownik zalogował się przy użyciu przepływu użytkownika Nie pamiętam hasła.

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

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

  2. Znajdź claimsSchema element. 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

Wersja 2.1.2 układu strony jest wymagana do włączenia przepływu samoobsługowego resetowania hasła podczas procesu rejestracji lub logowania. Aby uaktualnić wersję układu strony:

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

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

  3. Zmodyfikuj element DataURI w elemencie ContentDefinition, aby miał 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> -->
    

Profil techniczny przekształcania oświadczeń inicjuje oświadczenie isForgotPassword. Profil techniczny zostanie później odwołany. Po wywołaniu ustawia wartość oświadczenia isForgotPassword na true . Znajdź element ClaimsProviders. Jeśli element nie istnieje, dodaj go. 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>
    </TechnicalProfiles>
  </ClaimsProvider>
<!-- 
</ClaimsProviders> -->

Ustawienie profilu technicznego SelfAsserted-LocalAccountSignin-Email.forgotPasswordLinkOverride definiuje wymianę oświadczeń resetowania hasła, która jest wykonywana w podróży użytkownika.

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

Użytkownik może teraz zalogować się, zarejestrować się i zresetować hasło podczas podróży użytkownika. Aby lepiej zorganizować podróż użytkownika, możesz użyć podróży podrzędnej 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 typu, aby po zakończeniu podróży podrzędnej sterowanie zostało zwrócone do kroku aranżacji, który Call zainicjował podróż podrzędną.

Znajdź element SubJourneys. Jeśli element nie istnieje, dodaj go po elemencie 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

Następnie połącz link Nie pamiętam hasła? z podróżą podrzędną Nie pamiętam hasła. Odwołaj się do identyfikatora podróży podrzędnej 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 do rejestracji lub logowania. W przeciwnym razie przejdź do następnej sekcji.

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

W podróży użytkownika można reprezentować podróż podrzędną Nie pamiętam hasła jako claimsProviderSelection. Dodanie tego elementu łączy link Nie pamiętam hasła? z podróżą podrzędną Nie pamiętam hasła.

  1. 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. ClaimsProviderS element zawiera listę dostawców tożsamości, których użytkownik może używać do logowania. Dodaj następujący wiersz:

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

    <ClaimsExchange Id="ForgotPasswordExchange" TechnicalProfileReferenceId="ForgotPassword" />
    
  3. Dodaj następujący krok aranżacji między bieżącym i następnym krokiem. Nowy krok aranżacji, który dodajesz, sprawdza, czy istnieje oświadczenie isForgotPassword. Jeśli oświadczenie istnieje, wywołuje podróż podrzędną 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>
    
  4. Po dodaniu nowego kroku aranżacji należy ponownie numerować kroki sekwencyjnie bez pomijania liczb całkowitych z 1 na N.

Ustawianie podróży użytkownika do wykonania

Teraz, po zmodyfikowaniu lub utworzeniu podróży użytkownika, w sekcji Jednostki zależnej określ podróż, która zostanie Azure AD B2C dla tych zasad niestandardowych. W elemencie RelyingParty znajdź element DefaultUserJourney. Zaktualizuj wartość DefaultUserJourney ReferenceId tak, aby była dopasowana do identyfikatora podróży użytkownika, w której dodano wartość ClaimsProviderS nieakcyjna.

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

Wskazywanie przepływu zapomnianych haseł do aplikacji

Aplikacja może wymagać wykrycia, czy użytkownik zalogował się przy użyciu przepływu użytkownika Nie pamiętam hasła. Oświadczenie isForgotPassword zawiera wartość logiczną, która wskazuje, że zostały one. Oświadczenie może zostać wystawione w tokenie wysłanym do aplikacji. W razie potrzeby dodaj isForgotPassword do oświadczeń wyjściowych w sekcji Jednostki zależnej. 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>

Upload zasad niestandardowych

  1. Zaloguj się w witrynie Azure Portal.
  2. Na pasku narzędzi portalu wybierz ikonę Katalogi i subskrypcje.
  3. W ustawieniach portalu | W okienku Katalogi i subskrypcje znajdź swój Azure AD B2C na liście Nazwa katalogu, a następnie wybierz pozycję Przełącz.
  4. W Azure Portal wyszukaj i wybierz pozycję Azure AD B2C.
  5. W menu w obszarze Zasady wybierz pozycję Identity Experience Framework.
  6. Wybierz Upload zasad niestandardowych. W następującej kolejności przekaż dwa zmienione pliki zasad:
    1. Zasady rozszerzenia, na przykład , TrustFrameworkExtensions.xml.
    2. Zasady jednostki zależnej, na przykład SignUpSignIn.xml.

Testowanie przepływu resetowania hasła

  1. Wybierz przepływ użytkownika rejestracji lub logowania (typ zalecany), który chcesz przetestować.
  2. Wybierz pozycję Uruchom przepływ użytkownika.
  3. W przypadku aplikacji wybierz zarejestrowaną wcześniej aplikację internetową o nazwie webapp1. Adres URL odpowiedzi powinien pokazywać . https://jwt.ms
  4. Wybierz pozycję 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świetlanym oknie dialogowym zmień hasło użytkownika, a następnie wybierz pozycję Kontynuuj. Token jest zwracany do , https://jwt.ms a przeglądarka wyświetla go.
  8. Sprawdź wartość oświadczenia isForgotPassword tokenu zwracania. Jeśli hasło istnieje i ma ustawioną wartość true , użytkownik zresetował 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łużyć ten kod błędu, ponownie iniekcją biblioteki uwierzytelniania w celu uwierzytelnienia Azure AD B2C przepływu użytkownika resetowania hasła.

Na poniższym diagramie przedstawiono proces:

  1. W aplikacji użytkownik wybiera pozycję Zaloguj się. Aplikacja inicjuje żądanie autoryzacji i przekierowuje do Azure AD B2C, aby użytkownik może zakończyć logowanie. Żądanie autoryzacji określa nazwę zasad rejestracji lub logowania, na przykład B2C_1_signup_signin.

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

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

    Diagram przedstawiający starszy przepływ użytkownika resetowania hasła.

Zostanie wyświetlony podstawowy przykład ASP.NET, który pokazuje, jak działa link przepływów użytkownika.

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

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

  1. W Azure Portal przejdź do przeglądu Azure AD B2C dzierżawy.
  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. Na stronie Tworzenie przepływu użytkownika wybierz przepływ użytkownika Resetowanie hasła.
  4. W obszarze Wybierz wersję wybierz pozycję Zalecane, a następnie wybierz pozycję Utwórz.
  5. W polach 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 Zresetuj hasło przy użyciu adresu e-mail.
  7. Jeśli chcesz, aby użytkownicy w ramach uwierzytelniania wieloskładnikowego weryfikowali swoje tożsamości przy użyciu drugiej metody uwierzytelniania, wybierz typ metody i czas wymuszenia uwierzytelniania wieloskładnikowego. Dowiedz się więcej.
  8. Jeśli w obszarze Dostęp warunkowy skonfigurowano zasady dostępu warunkowego dla dzierżawy usługi Azure AD B2C i chcesz używać ich w tym przepływie użytkownika, zaznacz pole wyboru Wymuszaj zasady dostępu warunkowego. Nie trzeba 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ą być zwracane 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 przypadku aplikacji wybierz zarejestrowaną wcześniej aplikację internetową o nazwie webapp1. Adres URL odpowiedzi powinien być adresem https://jwt.ms .
  3. Wybierz pozycję Uruchom przepływ użytkownika, sprawdź adres e-mail utworzonego wcześniej konta, a następnie wybierz pozycję Kontynuuj.
  4. Zmień hasło, a następnie wybierz pozycję Kontynuuj. Token jest zwracany do , https://jwt.ms a przeglądarka wyświetla go.

Tworzenie zasad resetowania haseł

Zasady niestandardowe to zestaw plików XML, które można przekazać do dzierżawy Azure AD B2C w celu zdefiniowania podróży użytkownika. Oferujemy pakiety startowe, które mają kilka wstępnie sbudowaną zasad, w tym zasady rejestracji i logowania, resetowania haseł i edytowania profilów. Aby uzyskać więcej informacji, zobacz Wprowadzenie do zasad niestandardowych w Azure AD B2C.

Rozwiązywanie Azure AD B2C przepływów użytkownika i zasad niestandardowych

Aplikacja musi obsługiwać niektóre błędy pochodzące z usługi Azure B2C. Dowiedz się, jak Azure AD B2C przepływów użytkownika i zasad niestandardowych.

Następne kroki

Skonfiguruj wymuszanie resetowania hasła.