Konfigurera ett flöde för lösenordsåterställning i Azure Active Directory B2C

Innan du börjar använder du väljaren Välj en principtyp för att välja den typ av princip som du konfigurerar. Azure Active Directory B2C erbjuder två metoder för att definiera hur användare interagerar med dina program: via fördefinierade användarflöden eller genom fullständigt konfigurerbara anpassade principer. De steg som krävs i den här artikeln skiljer sig åt för varje metod.

Under en registrerings- och inloggningsresa kan en användare återställa sitt eget lösenord med hjälp av länken Har du glömt lösenordet? Det här självbetjäningsflödet för lösenordsåterställning gäller för lokala konton i Azure Active Directory B2C (Azure AD B2C) som använder en e-postadress eller ett användarnamn med ett lösenord för inloggning.

Flödet för lösenordsåterställning omfattar följande steg:

  1. På registrerings- och inloggningssidan väljer användaren länken Har du glömt lösenordet? Azure AD B2C initierar flödet för lösenordsåterställning.
  2. I nästa dialogruta som visas anger användaren sin e-postadress och väljer sedan Skicka verifieringskod. Azure AD B2C skickar en verifieringskod till användarens e-postkonto. Användaren kopierar verifieringskoden från e-postmeddelandet, anger koden i dialogrutan Azure AD B2C-lösenordsåterställning och väljer sedan Verifiera kod.
  3. Användaren kan sedan ange ett nytt lösenord. (När e-postmeddelandet har verifierats kan användaren fortfarande välja Ändra e-postknapp . Se Dölj knappen ändra e-post.)

Diagram that shows three dialogs in the password reset flow.

Dricks

En användare kan ändra sitt lösenord med hjälp av självbetjäningsflödet för lösenordsåterställning om de glömmer sitt lösenord och vill återställa det. Du kan också välja något av följande alternativ för användarflöde:

  • Om en användare känner till sitt lösenord och vill ändra det använder du ett flöde för lösenordsändring.
  • Om du vill tvinga en användare att återställa sitt lösenord (till exempel när de loggar in för första gången, när deras lösenord har återställts av en administratör eller efter att de har migrerats till Azure AD B2C med slumpmässiga lösenord), använder du ett force-flöde för lösenordsåterställning .

Standardnamnet för knappen Ändra e-post i selfAsserted.html är changeclaims. Om du vill hitta knappnamnet går du till registreringssidan och kontrollerar sidkällan med hjälp av ett webbläsarverktyg som Inspektera.

Förutsättningar

Dölj knappen ändra e-post

När e-postmeddelandet har verifierats kan användaren fortfarande välja Ändra e-post, ange en annan e-postadress och sedan upprepa e-postverifieringen. Om du föredrar att dölja knappen Ändra e-post kan du ändra CSS så att de associerade HTML-elementen döljs i dialogrutan. Du kan till exempel lägga till följande CSS-post i selfAsserted.html och anpassa användargränssnittet med hjälp av HTML-mallar:

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

Den nya funktionen för lösenordsåterställning är nu en del av registrerings- eller inloggningsprincipen. När användaren väljer länken Har du glömt lösenordet? skickas de omedelbart till funktionen Glömt lösenord. Programmet behöver inte längre hantera AADB2C90118 felkod och du behöver ingen separat princip för lösenordsåterställning.

Självbetjäningsfunktionen för lösenordsåterställning kan konfigureras för användarflödena Logga in (rekommenderas) eller Registrera dig och logga in (rekommenderas). Om du inte har konfigurerat något av dessa användarflöden skapar du ett användarflöde för registrering eller inloggning .

Så här konfigurerar du lösenordsåterställning via självbetjäning för registrerings- eller inloggningsanvändarflödet:

  1. Logga in på Azure-portalen.
  2. Om du har åtkomst till flera klienter väljer du ikonen Inställningar på den översta menyn för att växla till din Azure AD B2C-klient från menyn Kataloger + prenumerationer.
  3. I Azure-portalen söker du efter och väljer Azure AD B2C.
  4. Välj Användarflöden.
  5. Välj ett användarflöde för registrering eller inloggning (av typen Rekommenderas) som du vill anpassa.
  6. På menyn under Inställningar väljer du Egenskaper.
  7. Under Lösenordskonfiguration väljer du Självbetjäning av lösenordsåterställning.
  8. Välj Spara.
  9. I den vänstra menyn under Anpassa väljer du Sidlayouter.
  10. I Sidlayoutversion väljer du 2.1.3 eller senare.
  11. Välj Spara.

I följande avsnitt beskrivs hur du lägger till en lösenordsupplevelse med självbetjäning i en anpassad princip. Exemplet baseras på de principfiler som ingår i startpaketet för anpassad princip.

Dricks

Du hittar ett fullständigt exempel på registrerings- och inloggningsprincipen med lösenordsåterställning på GitHub.

Om du vill ange för principen att en användare har valt länken Har du glömt lösenordet? definierar du ett booleskt anspråk. Använd anspråket för att dirigera användarresan till den tekniska profilen Glömt lösenord . Anspråket kan också utfärdas till token, så programmet identifierar att användaren loggade in med hjälp av användarflödet Glömt lösenord.

Deklarera dina anspråk i anspråksschemat. Öppna tilläggsfilen för din princip, till exempel i SocialAndLocalAccounts/TrustFrameworkExtensions.xml.

  1. Sök efter elementet BuildingBlocks . Om elementet inte finns lägger du till det.

  2. Leta upp elementet ClaimsSchema . Om elementet inte finns lägger du till det.

  3. Lägg till följande anspråk i elementet 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> -->
    

Uppgradera sidlayoutversionen

Sidlayout version 2.1.2 krävs för att aktivera självbetjäningsflödet för lösenordsåterställning under registrerings- eller inloggningsresan. Så här uppgraderar du sidlayoutversionen:

  1. Öppna basfilen för principen, till exempel SocialAndLocalAccounts/TrustFrameworkBase.xml.

  2. Sök efter elementet BuildingBlocks . Om elementet inte finns lägger du till det.

  3. Leta upp elementet ContentDefinitions . Om elementet inte finns lägger du till det.

  4. Ändra DataURI-elementet i ContentDefinition-elementet så att det har IDapi.signuporsignin:

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

Lägg till de tekniska profilerna

En teknisk profil för anspråkstransformering har åtkomst till anspråket isForgotPassword . Den tekniska profilen refereras senare. När det anropas anger det värdet för anspråket isForgotPassword till true.

  1. Öppna tilläggsfilen för din princip, till exempel i SocialAndLocalAccounts/TrustFrameworkExtensions.xml.
  2. Leta upp elementet ClaimsProviders (om elementet inte finns skapar du det) och lägg sedan till följande anspråksprovider:
<!-- 
<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> -->

Den tekniska profilinställningen SelfAsserted-LocalAccountSignin-Email.forgotPasswordLinkOverride definierar utbytet av anspråk för lösenordsåterställning som körs under din användarresa.

Den tekniska profilen LocalAccountWritePasswordUsingObjectId UseTechnicalProfileForSessionManagementSM-AAD krävs för att användaren ska kunna förformera efterföljande inloggningar under SSO-villkor.

Lägg till underresan för lösenordsåterställning

Användaren kan nu logga in, registrera sig och utföra lösenordsåterställning under din användarresa. Om du vill organisera användarresan bättre kan du använda en underresa för att hantera flödet för lösenordsåterställning.

Underresan anropas från användarresan och utför de specifika steg som ger användaren en upplevelse för lösenordsåterställning. Call Använd underresan typ så att kontrollen returneras till orkestreringssteget som initierade underresan när underresan är klar.

  1. Öppna tilläggsfilen för din princip, till exempel SocialAndLocalAccounts/TrustFrameworkExtensions.xml.
  2. Hitta elementet SubJourneys . Om elementet inte finns lägger du till det efter elementet User Journeys . Lägg sedan till följande underresa:
<!--
<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>-->

Förbereda din användarresa

För att ansluta länken Har du glömt lösenordet? till underresan Glömt lösenord måste du referera till underresa-ID:t För glömt lösenord i elementet ClaimsProviderSelection i steget CombinedSignInAndSignUp.

Om du inte har en egen anpassad användarresa som har ett CombinedSignInAndSignUp-steg utför du följande steg för att duplicera en befintlig registrerings- eller inloggningsanvändarresa. Annars fortsätter du till nästa avsnitt.

  1. Öppna filen TrustFrameworkBase.xml i startpaketet, till exempel SocialAndLocalAccounts/TrustFrameworkBase.xml.
  2. Hitta och kopiera hela innehållet i elementet UserJourney som innehåller Id="SignUpOrSignIn".
  3. Öppna filen TrustFrameworkExtensions.xml , till exempel SocialAndLocalAccounts/TrustFrameworkExtensions.xml, och leta upp elementet UserJourneys . Om elementet inte finns skapar du det.
  4. Skapa ett underordnat element i UserJourneys-elementet genom att klistra in hela innehållet i userJourney-elementet som du kopierade i steg 2.
  5. Byt namn på ID:t för användarresan. Exempel: Id="CustomSignUpSignIn"

Under din användarresa kan du representera underresan Glömt lösenord som en ClaimsProviderSelection. Genom att lägga till det här elementet ansluter du länken Har du glömt lösenordet? till underresan Glömt lösenord.

  1. Öppna filen TrustFrameworkExtensions.xml, till exempel SocialAndLocalAccounts/TrustFrameworkExtensions.xml.

  2. I användarresan letar du reda på orkestreringsstegelementet som innehåller Type="CombinedSignInAndSignUp" eller Type="ClaimsProviderSelection". Det är vanligtvis det första orkestreringssteget. Elementet ClaimsProviderSelections innehåller en lista över identitetsprovidrar som en användare kan använda för att logga in. Lägg till följande rad:

    <ClaimsProviderSelection TargetClaimsExchangeId="ForgotPasswordExchange" />
    
  3. I nästa orkestreringssteg lägger du till ett ClaimsExchange-element genom att lägga till följande rad:

    <ClaimsExchange Id="ForgotPasswordExchange" TechnicalProfileReferenceId="ForgotPassword" />
    
  4. Lägg till följande orkestreringssteg mellan det aktuella steget och nästa steg. Det nya orkestreringssteget som du lägger till kontrollerar om isForgotPassword-anspråket finns. Om anspråket finns anropas underresan för lösenordsåterställning.

    <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. När du har lagt till det nya orkestreringssteget numrerar du om stegen sekventiellt utan att hoppa över några heltal från 1 till N.

Ange att användarresan ska köras

Nu när du har ändrat eller skapat en användarresa i avsnittet Förlitande part anger du den resa som Azure AD B2C ska köra för den här anpassade principen.

  1. Öppna filen med elementet Relying Party , till exempel SocialAndLocalAccounts/SignUpOrSignin.xml.

  2. Leta reda på elementet DefaultUserJourney i elementet RelyingParty.

  3. Uppdatera DefaultUserJourney ReferenceId så att det matchar ID:t för användarresan där du lade till ClaimsProviderSelections.

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

Ange flödet För glömt lösenord till din app

Ditt program kan behöva identifiera om användaren loggade in med hjälp av användarflödet Glömt lösenord. isForgotPassword-anspråket innehåller ett booleskt värde som anger att de gjorde det. Anspråket kan utfärdas i den token som skickas till ditt program. Om det behövs lägger du till isForgotPassword i utdataanspråken i avsnittet Förlitande part . Ditt program kan kontrollera isForgotPassword-anspråket för att avgöra om användaren återställer sitt lösenord.

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

Ladda upp den anpassade principen

  1. Logga in på Azure-portalen.
  2. Om du har åtkomst till flera klienter väljer du ikonen Inställningar på den översta menyn för att växla till Azure AD B2C-klientorganisationen från menyn Kataloger + prenumerationer.
  3. I Azure-portalen söker du efter och väljer Azure AD B2C.
  4. På menyn under Principer väljer du Identity Experience Framework.
  5. Välj Överför anpassad princip. I följande ordning laddar du upp de principfiler som du har ändrat:
    1. Basfilen för din princip, till exempel TrustFrameworkBase.xml.
    2. Tilläggsprincipen, till exempel TrustFrameworkExtensions.xml.
    3. Principen för förlitande part, till exempel SignUpSignIn.xml.

Testa flödet för lösenordsåterställning

  1. Välj ett användarflöde för registrering eller inloggning (rekommenderad typ) som du vill testa.
  2. Välja Kör användarflödet.
  3. För Program väljer du webbprogrammet med namnet webapp1 som du registrerade tidigare. Svars-URL :en ska visa https://jwt.ms.
  4. Välja Kör användarflödet.
  5. På registrerings- eller inloggningssidan väljer du Har du glömt lösenordet?.
  6. Kontrollera e-postadressen för det konto som du skapade tidigare och välj sedan Fortsätt.
  7. I dialogrutan som visas ändrar du lösenordet för användaren och väljer sedan Fortsätt. Token returneras till https://jwt.ms och webbläsaren visar den.
  8. Kontrollera returtokens isForgotPassword-anspråksvärde. Om den finns och är inställd på truehar användaren återställt lösenordet.

Princip för lösenordsåterställning (äldre)

Om självbetjäningsfunktionen för lösenordsåterställning inte är aktiverad utlöser det inte automatiskt ett användarflöde för lösenordsåterställning när du väljer den här länken. I stället returneras felkoden AADB2C90118 till ditt program. Ditt program måste hantera den här felkoden genom att initiera om autentiseringsbiblioteket för att autentisera ett användarflöde för azure AD B2C-lösenordsåterställning.

Följande diagram visar processen:

  1. I programmet väljer användaren Logga in. Appen initierar en auktoriseringsbegäran och omdirigerar till Azure AD B2C så att användaren kan slutföra inloggningen. Auktoriseringsbegäran anger ett namn på registrerings- eller inloggningsprincipen, till exempel B2C_1_signup_signin.

  2. Användaren väljer länken Har du glömt lösenordet? Azure AD B2C returnerar AADB2C90118 felkoden till programmet.

  3. Programmet hanterar felkoden och initierar en ny auktoriseringsbegäran. Auktoriseringsbegäran anger principnamnet för lösenordsåterställning, till exempel B2C_1_pwd_reset.

    Diagram that shows the legacy password reset user flow.

Du kan se ett grundläggande ASP.NET exempel som visar hur användarflöden länkar.

Skapa ett användarflöde för återställning av lösenord

Om du vill låta programanvändarna återställa sina lösenord skapar du ett användarflöde för lösenordsåterställning:

  1. I Azure-portalen går du till översikten över Azure AD B2C-klientorganisationen.
  2. I den vänstra menyn under Principer väljer du Användarflöden och sedan Nytt användarflöde.
  3. I Skapa ett användarflöde väljer du användarflödet Lösenordsåterställning.
  4. Under Välj en version väljer du Rekommenderas och sedan Skapa.
  5. Som Namn anger du ett namn för användarflödet. Till exempel passwordreset1.
  6. För identitetsprovidrar aktiverar du Återställ lösenord med användarnamn eller Återställ lösenord med hjälp av e-postadress.
  7. Om du vill kräva att användarna verifierar sina identiteter med hjälp av en andra autentiseringsmetod under Multifactor-autentisering väljer du metodtyp och när multifaktorautentisering ska tillämpas. Läs mer.
  8. Om du har konfigurerat principer för villkorlig åtkomst för din Azure AD B2C-klientorganisation och vill använda dem i det här användarflödet under Villkorsstyrd åtkomst markerar du kryssrutan Framtvinga principer för villkorlig åtkomst under Villkorsstyrd åtkomst. Du behöver inte ange något principnamn. Läs mer.
  9. Under Programanspråk väljer du Visa mer. Välj de anspråk som du vill ska returneras i de auktoriseringstoken som skickas tillbaka till ditt program. Välj till exempel Användarobjekt-id.
  10. Välj OK.
  11. Välj Skapa för att lägga till användarflödet. Ett prefix för B2C_1 läggs automatiskt till i namnet.

Testa användarflödet

Så här testar du användarflödet:

  1. Välj det användarflöde som du skapade. På översiktssidan för användarflöde väljer du Kör användarflöde.
  2. För Program väljer du det webbprogram som du vill testa, till exempel det som heter webapp1 om du registrerade det tidigare. Svars-URL :en ska vara https://jwt.ms.
  3. Välj Kör användarflöde, verifiera e-postadressen för det konto som du vill återställa lösenordet för och välj sedan Fortsätt.
  4. Ändra lösenordet och välj sedan Fortsätt. Token returneras till https://jwt.ms och webbläsaren visar den.

Skapa en princip för återställning av lösenord

Anpassade principer är en uppsättning XML-filer som du laddar upp till din Azure AD B2C-klient för att definiera användarresor. Vi tillhandahåller startpaket som har flera fördefinierade principer, inklusive registrerings- och inloggningsprinciper, lösenordsåterställning och profilredigeringsprinciper. Mer information finns i Komma igång med anpassade principer i Azure AD B2C.

Felsöka Azure AD B2C-användarflöden och anpassade principer

Ditt program måste hantera vissa fel som kommer från Azure B2C-tjänsten. Lär dig hur du felsöker Azure AD B2C:s användarflöden och anpassade principer.

Nästa steg

Konfigurera en tvingad lösenordsåterställning.

Registrering och inloggning med inbäddad lösenordsåterställning.