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. Stegen som krävs i den här artikeln är olika 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 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 knappen Ändra e-post . Se Dölj knappen Ändra e-post.)

    Diagram som visar tre dialogrutor i flödet för lösenordsåterställning.

Tips

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. Välj 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 när de har migrerats till Azure AD B2C med slumpmässiga lösenord), använder du ett tvingat flöde för lösenordsåterställning.

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>

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

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 ditt lösenord? skickas de omedelbart till funktionen Glömt lösenord. Ditt program behöver inte längre hantera felkoden AADB2C90118 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 självbetjäning av lösenordsåterställning för registrerings- eller inloggningsanvändarflödet:

  1. Logga in på Azure-portalen.
  2. I portalens verktygsfält väljer du ikonen Kataloger + prenumerationer .
  3. I portalinställningarna | Fönstret Kataloger + prenumerationer, leta upp din Azure AD B2C-katalog i listan Katalognamn och välj sedan Växla.
  4. I Azure Portal söker du efter och väljer Azure AD B2C.
  5. Välj Användarflöden.
  6. Välj ett användarflöde för registrering eller inloggning (av typen Rekommenderas) som du vill anpassa.
  7. På menyn under Inställningar väljer du Egenskaper.
  8. Under Lösenordskonfiguration väljer du Självbetjäning av lösenordsåterställning.
  9. Välj Spara.
  10. I den vänstra menyn under Anpassa väljer du Sidlayouter.
  11. I Sidlayoutversion väljer du 2.1.3 eller senare.
  12. 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å principfilerna som ingår i det anpassade principstartpaketet.

Tips

Du hittar ett komplett 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 filnamnstillägg för principen, 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 i 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 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> -->
    

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 den anropas anger den värdet för anspråket isForgotPassword till true.

  1. Öppna filnamnstillägg för principen, till exempel i SocialAndLocalAccounts/TrustFrameworkExtensions.xml.
  2. Leta reda på 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> -->

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

Den tekniska profilen LocalAccountWritePasswordUsingObjectIdUseTechnicalProfileForSessionManagementSM-AAD krävs för att användaren ska kunna föregå 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. För att bättre organisera användarresan 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 typen underresa så att när underresan är klar returneras kontrollen till orkestreringssteget som initierade underresan.

  1. Öppna tilläggsfilen för principen, 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

Anslut sedan länken Har du glömt lösenordet? till underresan Glömt lösenord. 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 filenTrustFrameworkBase.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 TrustFrameworkExtensions.xml fil, till exempel SocialAndLocalAccounts/TrustFrameworkExtensions.xmloch leta upp elementet UserJourneys . Om elementet inte finns skapar du det.
  4. Skapa ett underordnat element i elementet UserJourneys genom att klistra in hela innehållet i elementet UserJourney som du kopierade i steg 2.
  5. Byt namn på ID:t för användarresan. Till exempel Id="CustomSignUpSignIn".

I din användarresa kan du representera underresan För glömt lösenord som en ClaimsProviderSelection. Genom att lägga till det här elementet ansluter du länken Forgot your password? (Har du glömt ditt lösenord?) till underresan Forgot Password (Glömt lösenord).

  1. Öppna filenTrustFrameworkExtensions.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 vilken användarresa som ska köras

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

  1. Öppna filen som har elementet Förlitande part , 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

Programmet kan behöva identifiera om användaren loggade in med 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. I portalens verktygsfält väljer du ikonen Kataloger + prenumerationer .
  3. I portalinställningarna | Kataloger + prenumerationer, leta upp din Azure AD B2C-katalog i listan Katalognamn och välj sedan Växla.
  4. I Azure Portal söker du efter och väljer Azure AD B2C.
  5. På menyn under Principer väljer du Identity Experience Framework.
  6. Välj Överför anpassad princip. Ladda upp de två principfilerna som du ändrade i följande ordning:
    1. Tilläggsprincipen, till exempel SocialAndLocalAccounts/TrustFrameworkExtensions.xml.
    2. Den förlitande partens princip, till exempel SocialAndLocalAccounts/SignUpOrSignin.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älj Kör användarflöde.
  3. För Program väljer du webbprogrammet med namnet webapp1 som du registrerade tidigare. Svars-URL:en bör visa https://jwt.ms.
  4. Välj Kör användarflöde.
  5. På registrerings- eller inloggningssidan väljer du Glömt ditt lösenord?.
  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 anspråksvärdet för returtoken isForgotPassword . Om den finns och är inställd truepå har 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 inte användarflödet för lösenordsåterställning automatiskt om du väljer den här länken. I stället returneras felkoden AADB2C90118 till ditt program. Programmet 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 ditt lösenord? . Azure AD B2C returnerar AADB2C90118 felkoden till programmet.

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

    Diagram som visar användarflödet för äldre lösenordsåterställning.

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 Portal går du till Azure AD B2C-klientorganisationsöversikt.
  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 För lösenordsåterställning .
  4. Under Välj en version väljer du Rekommenderat och sedan Skapa.
  5. För 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 de ska framtvinga multifaktorautentisering. Läs mer.
  8. Om du har konfigurerat principer för villkorlig åtkomst för din Azure AD B2C-klientorganisation under Villkorsstyrd åtkomst och du vill använda dem i det här användarflödet markerar du kryssrutan Framtvinga principer för villkorlig åtkomst. Du behöver inte ange ett 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 på 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 webbprogrammet med namnet webapp1 som du registrerade 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 skapade tidigare 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-klientorganisation 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 Kom 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.

Registrera dig och logga in med inbäddad lösenordsåterställning.