Stroom voor wachtwoordherstel instellen in Azure Active Directory B2C

Voordat u begint, gebruikt u de selector Een beleidstype kiezen om het type beleid te kiezen dat u instelt. U kunt in Azure Active Directory B2C op twee manieren definiëren hoe gebruikers met uw toepassingen communiceren: via vooraf gedefinieerde gebruikersstromen of via volledig configureerbaar aangepast beleid. De vereiste stappen in dit artikel zijn voor elke methode anders.

In een registratie- en aanmeldingstraject kan een gebruiker zijn eigen wachtwoord opnieuw instellen met behulp van de koppeling Uw wachtwoord vergeten? Deze stroom voor self-service voor wachtwoordherstel is van toepassing op lokale accounts in Azure Active Directory B2C (Azure AD B2C) die gebruikmaken van een e-mailadres of een gebruikersnaam met een wachtwoord voor aanmelding.

De stroom voor wachtwoordherstel omvat de volgende stappen:

  1. Op de registratie- en aanmeldingspagina selecteert de gebruiker de koppeling Uw wachtwoord vergeten? In Azure AD B2C wordt de stroom voor wachtwoordherstel gestart.
  2. In het volgende dialoogvenster dat wordt weergegeven, voert de gebruiker zijn of haar e-mailadres in en selecteert Verificatiecode verzenden. Azure AD B2C stuurt een verificatiecode naar het e-mailaccount van de gebruiker. De gebruiker kopieert de verificatiecode uit het e-mailbericht, voert de code in het dialoogvenster Azure AD B2C-wachtwoordherstel in en selecteert Code verifiëren.
  3. De gebruiker kan vervolgens een nieuw wachtwoord invoeren. (Nadat de e-mail is geverifieerd, kan de gebruiker nog steeds de knop E-mail wijzigen selecteren. Zie De knop E-mail wijzigen verbergen.)

Diagram met drie dialoogvensters in de stroom voor wachtwoordherstel.

Tip

Als een gebruiker het wachtwoord vergeet, kan deze het wachtwoord wijzigen met behulp van de stroom voor self-service voor wachtwoordherstel. U kunt ook een van de volgende opties voor gebruikersstromen kiezen:

  • Als een gebruiker het wachtwoord kent en dit wil wijzigen, gebruikt deze een stroom voor wachtwoordwijziging.
  • Als u wilt afdwingen dat een gebruiker het wachtwoord opnieuw instelt (bijvoorbeeld wanneer deze zich voor het eerst aanmeldt, wanneer hun het wachtwoorden opnieuw door een beheerder moet worden ingesteld of nadat de gebruiker met willekeurige wachtwoorden naar Azure AD B2C is gemigreerd), gebruikt u een stroom voor wachtwoord opnieuw instellen afdwingen.

De standaardnaam van de knop E-mail wijzigen in selfAsserted.html is changeclaims. Als u de naam van de knop wilt vinden, inspecteert u op de registratiepagina de paginabron met behulp van een browserprogramma zoals Inspecteren.

Vereisten

Knop E-mail wijzigen verbergen

Nadat de e-mail is geverifieerd, kan de gebruiker nog steeds E-mail wijzigen selecteren, een ander e-mailadres invoeren en vervolgens e-mailverificatie herhalen. Als u liever de knop E-mail wijzigen wilt verbergen, kunt u de CSS wijzigen om de bijbehorende HTML-elementen in het dialoogvenster te verbergen. U kunt bijvoorbeeld de volgende CSS-vermelding toevoegen aan selfAsserted.html en de gebruikersinterface aanpassen met behulp van HTML-sjablonen:

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

De nieuwe werkwijze voor het opnieuw instellen van wachtwoorden maakt voortaan deel uit van het registratie- of aanmeldingsbeleid. Wanneer de gebruiker de koppeling Uw wachtwoord vergeten? selecteert, wordt deze onmiddellijk doorgestuurd naar de werkwijze Wachtwoord vergeten. Uw toepassing hoeft de foutcode AADB2C90118 niet meer af te handelen en u hebt geen afzonderlijk beleid nodig voor het opnieuw instellen van wachtwoorden.

De self-service voor wachtwoordherstel kan worden geconfigureerd voor de gebruikersstromen Aanmelden (aanbevolen) of Registreren en aanmelden (aanbevolen). Als u geen van deze gebruikersstromen hebt ingesteld, maakt u een gebruikersstroom voor registratie of aanmelding.

Self-service voor wachtwoordherstel instellen voor de gebruikersstroom voor registratie of aanmelding:

  1. Meld u aan bij de Azure-portal.
  2. Selecteer in de portalwerkbalk het pictogram Adreslijsten en abonnementen.
  3. Ga op de pagina Portalinstellingen | Adreslijsten en abonnementen naar uw Azure AD B2C-adreslijst in de lijst Naam adreslijst en selecteer Schakelen.
  4. Zoek en selecteer Azure AD B2C in de Azure-portal.
  5. Selecteer Gebruikersstromen.
  6. Selecteer een gebruikersstroom voor registratie of aanmelding (van het type Aanbevolen) die u wilt aanpassen.
  7. Selecteer in het menu bij Instellingen de optie Eigenschappen.
  8. Selecteer onder Wachtwoordconfiguratie de optie Self-service voor wachtwoordherstel.
  9. Selecteer Opslaan.
  10. Selecteer in het linkermenu bij Aanpassen de optie Pagina-indelingen.
  11. Selecteer in Pagina-indelingsversie de optie 2.1.3 of hoger.
  12. Selecteer Opslaan.

In de volgende secties wordt beschreven hoe u self-service voor wachtwoordherstel toevoegt aan een aangepaste beleidsregel. Het voorbeeld is gebaseerd op de beleidsbestanden die zijn opgenomen in het aangepaste beginnerspakket voor beleid.

Tip

Op GitHub vindt u een uitgewerkt voorbeeld voor registratie en aanmelding met het beleid voor wachtwoordherstel.

Definieer een booleaanse claim om aan te geven dat een gebruiker de koppeling Uw wachtwoord vergeten? heeft geselecteerd. Gebruik de claim om de gebruikersbeleving door te sturen naar het technische profiel Wachtwoord vergeten. De claim kan ook worden uitgegeven aan het token, zodat de toepassing detecteert dat de gebruiker zich heeft aangemeld met behulp van de gebruikersstroom Wachtwoord vergeten.

Geef uw claims aan in het claimschema. Open het bestand met extensies van uw beleid, bijvoorbeeld in SocialAndLocalAccounts/TrustFrameworkExtensions.xml.

  1. Zoek naar het element BuildingBlocks. Als het element niet aanwezig is, voegt u het toe.

  2. Zoek naar het element ClaimsSchema. Als het element niet aanwezig is, voegt u het toe.

  3. Voeg de volgende claim toe aan het element 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> -->
    

De versie van de pagina-indeling upgraden

Pagina-indelingsversie 2.1.2 is vereist om de stroom voor self-service voor wachtwoordherstel in te schakelen in het registratie- of aanmeldingstraject. De versie van de pagina-indeling upgraden:

  1. Open het basisbestand van uw beleid, bijvoorbeeld SocialAndLocalAccounts/TrustFrameworkBase.xml.

  2. Zoek naar het element BuildingBlocks. Als het element niet aanwezig is, voegt u het toe.

  3. Zoek het element ContentDefinitions. Als het element niet aanwezig is, voegt u het toe.

  4. Wijzig het element DataURI binnen het element ContentDefinition zodat deze de id api.signuporsignin bevat:

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

Technische profielen toevoegen

Een technisch profiel voor claimstransformatie heeft toegang tot de claim isForgotPassword. Er wordt later naar het technische profiel verwezen. Wanneer het wordt aangeroepen, wordt de waarde van de claim isForgotPassword ingesteld op true.

  1. Open het bestand met extensies van uw beleid, bijvoorbeeld in SocialAndLocalAccounts/TrustFrameworkExtensions.xml.
  2. Zoek het element ClaimsProviders (als het element niet bestaat, maakt u het) en voeg vervolgens de volgende claimprovider toe:
<!-- 
<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> -->

Kenmerk setting.forgotPasswordLinkOverride van technisch profiel SelfAsserted-LocalAccountSignin-Email definieert de uitwisseling van claims voor wachtwoordherstel die in uw gebruikersbeleving wordt uitgevoerd.

Sessiebeheer UseTechnicalProfileForSessionManagementSM-AAD van technisch profiel LocalAccountWritePasswordUsingObjectId is vereist zodat de gebruiker opvolgende aanmeldingen kan uitvoeren onder SSO-voorwaarden.

Subbeleving voor wachtwoordherstel toevoegen

De gebruiker kan zich in uw gebruikersbeleving voortaan aanmelden, registreren en het wachtwoord opnieuw instellen. Als u de gebruikersbeleving beter wilt organiseren, kunt u een subbeleving gebruiken om de stroom voor wachtwoordherstel te verwerken.

De subbeleving wordt aangeroepen vanuit de gebruikersbeleving en het traject voert de specifieke stappen uit die de werkwijze voor wachtwoordherstel voor de gebruiker beschikbaar stellen. Gebruik het subbelevingstype Call, zodat zodra de subbeleving is voltooid, het beheer opnieuw aan de indelingsstap wordt teruggegeven die de subbeleving heeft geïnitieerd.

  1. Open het extensiebestand van uw beleid, zoals SocialAndLocalAccounts/TrustFrameworkExtensions.xml.
  2. Zoek het element SubJourneys. Als het element niet bestaat, voegt u het toe na het element UserJourneys. Voeg vervolgens de volgende subbeleving toe:
<!--
<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>-->

Uw gebruikerstraject voorbereiden

Als u vervolgens de koppeling Uw wachtwoord vergeten? wilt koppelen aan het subtraject Wachtwoord vergeten , moet u verwijzen naar de subtraject-id wachtwoord vergeten in het element ClaimsProviderSelection van de stap CombinedSignInAndSignUp .

Als u geen eigen aangepaste gebruikersbeleving hebt met de stap CombinedSignInAndSignUp-stap, voert u de volgende stappen uit om een bestaande gebruikersbeleving voor registratie of aanmelding te dupliceren. Anders gaat u verder met de volgende stap.

  1. Open in het starterspakket het TrustFrameworkBase.xml-bestand , zoals SocialAndLocalAccounts/TrustFrameworkBase.xml.
  2. Ga naar de volledige inhoud van het element UserJourney dat Id="SignUpOrSignIn" bevat en kopieer deze.
  3. Open TrustFrameworkExtensions.xml bestand, zoals SocialAndLocalAccounts/TrustFrameworkExtensions.xml, en zoek het element UserJourneys . Als het element niet bestaat, maakt u het.
  4. Maak een onderliggend element van element UserJourneys door de volledige inhoud van element UserJourney, dat u in stap 2 hebt gekopieerd, te plakken.
  5. Wijzig de naam van de id van de gebruikersbeleving. Bijvoorbeeld Id="CustomSignUpSignIn".

In uw gebruikersbeleving kunt u de subbeleving Wachtwoord vergeten representeren als de waarde ClaimsProviderSelection. Door dit element toe te voegen, koppelt u de koppeling Wachtwoord vergeten? aan het subtraject Wachtwoord vergeten.

  1. Open het TrustFrameworkExtensions.xml-bestand , zoals SocialAndLocalAccounts/TrustFrameworkExtensions.xml.

  2. Zoek in de gebruikersbeleving het element van de indelingsstap dat Type="CombinedSignInAndSignUp" of Type="ClaimsProviderSelection" bevat. Dit is doorgaans de eerste indelingsstap. Element ClaimsProviderSelections bevat een lijst met id-providers die een gebruiker kan gebruiken om zich aan te melden. Voeg de volgende regel toe:

    <ClaimsProviderSelection TargetClaimsExchangeId="ForgotPasswordExchange" />
    
  3. Voeg in de volgende indelingsstap een ClaimExchange-element toe door de volgende regel toe te voegen:

    <ClaimsExchange Id="ForgotPasswordExchange" TechnicalProfileReferenceId="ForgotPassword" />
    
  4. Voeg tussen de huidige stap en de volgende stap de volgende indelingsstap toe. Met de nieuwe indelingsstap die u toevoegt, wordt gecontroleerd of claim isForgotPassword bestaat. Als de claim bestaat, wordt subbeleving voor wachtwoordherstel aangeroepen.

    <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. Nadat u de nieuwe indelingsstap hebt toegevoegd, geeft u de stappen nieuwe opeenvolgende nummers zonder gehele getallen van 1 tot N over te slaan.

De gebruikersbeleving instellen die moet worden uitgevoerd

Nu u een gebruikersbeleving hebt gewijzigd of gemaakt, geeft u in de sectie Relying Party de beleving op die Azure AD B2C voor dit aangepaste beleid uitvoert.

  1. Open het bestand met het Relying Party-element , zoals SocialAndLocalAccounts/SignUpOrSignin.xml.

  2. Zoek in element RelyingParty het element DefaultUserJourney.

  3. Werk DefaultUserJourney ReferenceId bij, zodat deze overeenkomt met de id van de gebruikersbeleving waaraan u ClaimsProviderSelections hebt toegevoegd.

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

De stroom Wachtwoord vergeten voor uw app aangeven

Uw toepassing moet mogelijk detecteren of de gebruiker zich heeft aangemeld met behulp van de gebruikersstroom Wachtwoord vergeten. Claim isForgotPassword bevat een booleaanse waarde die aangeeft dat de gebruiker dit heeft gedaan. De claim kan worden uitgegeven in het token dat naar uw toepassing wordt verzonden. Voeg indien nodig isForgotPassword toe aan de uitvoerclaims in de sectie Relying Party. Uw toepassing kan de claim isForgotPassword controleren om te bepalen of de gebruiker het wachtwoord opnieuw instelt.

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

Aangepaste beleid uploaden

  1. Meld u aan bij de Azure-portal.
  2. Selecteer in de portalwerkbalk het pictogram Adreslijsten en abonnementen.
  3. Ga op de pagina Portalinstellingen | Adreslijsten en abonnementen naar uw Azure AD B2C-adreslijst in de lijst Naam adreslijst en selecteer Schakelen.
  4. Zoek en selecteer Azure AD B2C in de Azure-portal.
  5. Selecteer in het menu bij Beleid de optie Identity Experience Framework.
  6. Selecteer Aangepast beleid uploaden. Upload in de volgende volgorde de beleidsbestanden die u hebt gewijzigd:
    1. Het basisbestand van uw beleid, bijvoorbeeld TrustFrameworkBase.xml.
    2. Het extensiebeleid, bijvoorbeeld TrustFrameworkExtensions.xml.
    3. Het Relying Party-beleid, bijvoorbeeld SignUpSignIn.xml.

Stroom voor wachtwoordherstel testen

  1. Selecteer een gebruikersstroom voor registratie of aanmelding (aanbevolen type) die u wilt testen.
  2. Selecteer Gebruikersstroom uitvoeren.
  3. Selecteer voor Toepassing de webtoepassing met de naam webapp1 die u eerder hebt geregistreerd. De antwoord-URL moet https://jwt.ms weergeven.
  4. Selecteer Gebruikersstroom uitvoeren.
  5. Selecteer op de registratie- of aanmeldingspagina Uw wachtwoord vergeten?.
  6. Verifieer het e-mailadres van het account dat u eerder hebt gemaakt en selecteer Doorgaan.
  7. Wijzig in het dialoogvenster dat wordt weergegeven het wachtwoord voor de gebruiker en selecteer Doorgaan. Het token wordt geretourneerd aan https://jwt.ms en in de browser weergegeven.
  8. Controleer de claimwaarde isForgotPassword van het geretourneerde token. Als deze bestaat en is ingesteld op true, heeft de gebruiker het wachtwoord opnieuw ingesteld.

Beleid voor wachtwoordherstel (verouderd)

Als self-service voor wachtwoordherstel niet is ingeschakeld, wordt met het selecteren van deze koppeling niet automatisch een gebruikersstroom voor wachtwoordherstel geactiveerd. In plaats daarvan wordt foutcode AADB2C90118 naar uw toepassing geretourneerd. De toepassing moet deze foutcode verwerken door de verificatiebibliotheek opnieuw te initialiseren om een Azure AD B2C-gebruikersstroom voor wachtwoordherstel te verifiëren.

In het volgende diagram wordt dit proces geïllustreerd:

  1. In de toepassing selecteert de gebruiker Aanmelden. De app initieert een autorisatieaanvraag en stuurt de gebruiker door naar Azure AD B2C, zodat deze zich kan aanmelden. De autorisatieaanvraag geeft een naam voor het registratie- of aanmeldingsbeleid op, bijvoorbeeld B2C_1_signup_signin.

  2. De gebruiker selecteert de koppeling Uw wachtwoord vergeten?. Azure AD B2C retourneert foutcode AADB2C90118 naar de toepassing.

  3. De toepassing verwerkt de foutcode en initieert een nieuwe autorisatieaanvraag. De autorisatieaanvraag geeft de naam voor het beleid voor wachtwoordherstel op, bijvoorbeeld B2C_1_pwd_reset.

    Diagram met de verouderde gebruikersstroom voor wachtwoordherstel.

U ziet een eenvoudig ASP.NET-voorbeeld, waarin wordt gedemonstreerd hoe gebruikersstromen worden gekoppeld.

Een gebruikersstroom voor het opnieuw instellen van het wachtwoord maken

Als u wilt dat gebruikers van uw toepassing hun wachtwoorden opnieuw instellen, maakt u een gebruikersstroom voor wachtwoordherstel:

  1. Ga in Azure Portal naar het overzicht van de Azure AD B2C-tenant.
  2. Selecteer in het linkermenu bij Beleid de optie Gebruikersstromen en selecteer vervolgens Nieuwe gebruikersstroom.
  3. Selecteer in Een gebruikersstroom maken de gebruikersstroom Wachtwoord opnieuw instellen.
  4. Onder Selecteer een versie selecteert u Aanbevolen en vervolgens Maken.
  5. Voer bij Naam een naam in voor de gebruikersstroom. Bijvoorbeeld passwordreset1.
  6. Schakel bij Id-providersWachtwoord opnieuw instellen met behulp van gebruikersnaam of Wachtwoord opnieuw instellen met behulp van e-mailadres in.
  7. Als u wilt dat gebruikers hun identiteit verifiëren met behulp van een tweede verificatiemethode, selecteert u bij Meervoudige verificatie het type verificatiemethode en tevens wanneer u meervoudige verificatie wilt afdwingen. Meer informatie.
  8. Als u bij Voorwaardelijke toegang voorwaardelijke toegang hebt geconfigureerd voor uw Azure AD B2C-tenant en u deze wilt gebruiken in deze gebruikersstroom, schakelt u het selectievakje Beleid voor voorwaardelijke toegang afdwingen in. U hoeft geen beleidsnaam op te geven. Meer informatie.
  9. Selecteer onder Toepassingsclaims de optie Meer weergeven. Kies de claims die u wilt retourneren naar de autorisatietokens die naar uw toepassing worden teruggestuurd. Selecteer bijvoorbeeld Object-ID van gebruiker.
  10. Selecteer OK.
  11. Selecteer Maken om de gebruikersstroom toe te voegen. Het voorvoegsel B2C_1 wordt automatisch aan de naam toegevoegd.

De gebruikersstroom testen

Gebruikersstroom testen:

  1. Selecteer de gebruikersstroom die u hebt gemaakt. Op de overzichtspagina van de gebruikersstroom selecteert u Gebruikersstroom uitvoeren.
  2. Selecteer bij Toepassing de webtoepassing die u wilt testen, bijvoorbeeld de webtoepassing met de naam webapp1 als u die eerder hebt geregistreerd. De antwoord-URL moet https://jwt.ms zijn.
  3. Selecteer Gebruikersstroom uitvoeren, controleer het e-mailadres van het account waarvoor u het wachtwoord opnieuw wilt instellen en selecteer vervolgens Doorgaan.
  4. Wijzig het wachtwoord en selecteer Doorgaan. Het token wordt geretourneerd aan https://jwt.ms en in de browser weergegeven.

Een beleid voor het opnieuw instellen van het wachtwoord maken

Aangepaste beleidsregels bestaan uit een reeks XML-bestanden die u uploadt naar uw Azure AD B2C-tenant om gebruikersbelevingen te definiëren. We bieden beginnerspakketten met verschillende vooraf gebouwde beleidsregels, waaronder die voor registratie en aanmelding, wachtwoordherstel en profielbewerking. Zie Aan de slag met aangepaste beleidsregels in Azure AD B2C voor meer informatie.

Problemen met Azure AD B2C-gebruikersstromen en aangepaste beleidsregels oplossen

Uw toepassing moet bepaalde fouten verwerken die afkomstig zijn van de Azure B2C-service. Lees Problemen met Azure AD B2C-gebruikersstromen en aangepaste beleidsregels oplossen.

Volgende stappen

Stel wachtwoord opnieuw instellen afdwingen in.

Registreren en aanmelden met ingesloten wachtwoordherstel.