Nastavení toku resetování hesla v Azure Active Directory B2C

Než začnete, pomocí selektoru Zvolit typ zásady zvolte typ zásady, kterou nastavujete. Azure Active Directory B2C nabízí dvě metody pro definování způsobu interakce uživatelů s vašimi aplikacemi: prostřednictvím předdefinovaných toků uživatelů nebo prostřednictvím plně konfigurovatelných vlastních zásad. Kroky vyžadované v tomto článku se pro každou metodu liší.

Při registraci a přihlašovací cestě může uživatel resetovat svoje vlastní heslo pomocí odkazu Zapomněli jste si heslo? Tento tok samoobslužného resetování hesla se vztahuje na místní účty v Azure Active Directory B2C (Azure AD B2C), které používají e-mailovou adresu nebo uživatelské jméno s heslem pro přihlášení.

Tok resetování hesla zahrnuje následující kroky:

  1. Na registrační a přihlašovací stránce uživatel vybere odkaz Zapomněl jste heslo? Azure AD B2C zahájí tok resetování hesla.
  2. V dalším dialogovém okně, které se zobrazí, uživatel zadá svoji e-mailovou adresu a pak vybere Odeslat ověřovací kód. Azure AD B2C odešle ověřovací kód do e-mailového účtu uživatele. Uživatel zkopíruje ověřovací kód z e-mailu, zadá kód do dialogového okna pro resetování hesla Azure AD B2C a pak vybere Ověřit kód.
  3. Uživatel pak může zadat nové heslo. (Po ověření e-mailu může uživatel stále vybrat ikonuTlačítko Změnit e-mail ; viz Skrýt tlačítko změnit e-mail.)

Diagram that shows three dialogs in the password reset flow.

Tip

Uživatel může změnit heslo pomocí toku samoobslužného resetování hesla, pokud heslo zapomene a chce ho resetovat. Můžete také zvolit jednu z následujících možností toku uživatele:

  • Pokud uživatel zná svoje heslo a chce ho změnit, použijte tok změny hesla.
  • Pokud chcete vynutit resetování hesla uživatelem (například při prvním přihlášení, resetování hesel správcem nebo po migraci do Azure AD B2C s náhodnými hesly), použijte tok vynuceného resetování hesla.

Výchozí název tlačítka Změnit e-mail v souboru selfAsserted.html je changeclaims. Název tlačítka najdete tak, že na registrační stránce zkontrolujete zdroj stránky pomocí nástroje prohlížeče, jako je kontrola.

Předpoklady

Skrýt tlačítko změnit e-mail

Po ověření e-mailu může uživatel přesto vybrat Změnit e-mail, zadat jinou e-mailovou adresu a pak opakovat ověření e-mailu. Pokud chcete skrýt tlačítko Změnit e-mail , můžete upravit šablony stylů CSS tak, aby skryly přidružené prvky HTML v dialogovém okně. Můžete například přidat následující položku CSS do selfAsserted.html a přizpůsobit uživatelské rozhraní pomocí šablon HTML:

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

Nové prostředí pro resetování hesla je teď součástí zásad registrace nebo přihlašování. Když uživatel vybere odkaz Zapomenuté heslo? Odešle se okamžitě do prostředí Zapomenuté heslo. Vaše aplikace už nemusí zpracovávat kód chyby AADB2C90118 a pro resetování hesla nepotřebujete samostatnou zásadu.

Samoobslužné resetování hesla je možné nakonfigurovat pro toky přihlášení (doporučeno) nebo registrace a přihlášení (doporučeno). Pokud nemáte nastavený některý z těchto toků uživatelů, vytvořte tok uživatele pro registraci nebo přihlášení .

Nastavení samoobslužného resetování hesla pro tok registrace nebo přihlášení uživatele:

  1. Přihlaste se k portálu Azure.
  2. Pokud máte přístup k více tenantům, v horní nabídce vyberte ikonu Nastavení a v nabídce Adresáře a předplatná přepněte do svého tenanta Azure AD B2C.
  3. Na webu Azure Portal vyhledejte a vyberte Azure AD B2C.
  4. Vyberte Toky uživatele.
  5. Vyberte tok uživatele pro registraci nebo přihlášení (podle typu Doporučeno), který chcete přizpůsobit.
  6. V nabídce pod Nastavení vyberte Vlastnosti.
  7. V části Konfigurace hesla vyberte Samoobslužné resetování hesla.
  8. Zvolte Uložit.
  9. V nabídce vlevo v části Přizpůsobit vyberte Rozložení stránky.
  10. Ve verzi rozložení stránky vyberte 2.1.3 nebo novější.
  11. Zvolte Uložit.

Následující části popisují, jak do vlastních zásad přidat samoobslužné heslo. Ukázka je založená na souborech zásad, které jsou součástí vlastního úvodního balíčku zásad.

Tip

Kompletní ukázku zásad pro registraci a přihlášení pomocí zásad resetování hesla najdete na GitHubu.

Chcete-li označit zásadu, že uživatel vybral odkaz Zapomenuté heslo? Definujte logickou deklaraci identity. Pomocí deklarace identity nasměrujte cestu uživatele do technického profilu Zapomenuté heslo . Deklarace identity může být také vydána tokenu, takže aplikace zjistí, že uživatel přihlášen pomocí toku zapomenutého hesla.

Deklarujte deklarace identity ve schématu deklarací identity. Otevřete soubor s příponami zásad, například v SocialAndLocalAccounts /TrustFrameworkExtensions.xml.

  1. Vyhledejte element BuildingBlocks . Pokud prvek neexistuje, přidejte ho.

  2. Vyhledejte element ClaimsSchema . Pokud prvek neexistuje, přidejte ho.

  3. Do elementu ClaimsSchema přidejte následující deklaraci identity.

    <!-- 
    <BuildingBlocks>
      <ClaimsSchema> -->
        <ClaimType Id="isForgotPassword">
          <DisplayName>isForgotPassword</DisplayName>
          <DataType>boolean</DataType>
          <AdminHelpText>Whether the user has selected Forgot your Password</AdminHelpText>
        </ClaimType>
      <!--
      </ClaimsSchema>
    </BuildingBlocks> -->
    

Upgrade verze rozložení stránky

Rozložení stránky verze 2.1.2 je potřeba k povolení toku samoobslužného resetování hesla při registraci nebo přihlášení. Upgrade verze rozložení stránky:

  1. Otevřete základní soubor zásad, například SocialAndLocalAccounts/TrustFrameworkBase.xml.

  2. Vyhledejte element BuildingBlocks . Pokud prvek neexistuje, přidejte ho.

  3. Vyhledejte element ContentDefinitions. Pokud prvek neexistuje, přidejte ho.

  4. Upravte prvek DataURI v elementu ContentDefinition tak, aby měl IDapi.signuporsignin:

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

Přidání technických profilů

Technický profil transformace deklarací identity přistupuje k isForgotPassword deklaraci identity. Na technický profil se odkazuje později. Při vyvolání nastaví hodnotu isForgotPassword deklarace identity na truehodnotu .

  1. Otevřete soubor s příponami zásad, například v SocialAndLocalAccounts /TrustFrameworkExtensions.xml.
  2. Vyhledejte element ClaimsProviders (pokud element neexistuje, vytvořte ho) a přidejte následující zprostředkovatele deklarací identity:
<!-- 
<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> -->

Nastavení technického profilu SelfAsserted-LocalAccountSignin-Email.forgotPasswordLinkOverride definuje výměnu deklarací identity resetování hesel, která se spouští na cestě uživatele.

Správce relací LocalAccountWritePasswordUsingObjectId UseTechnicalProfileForSessionManagementSM-AAD vyžaduje, aby uživatel úspěšně vytvořil další přihlášení za podmínek jednotného přihlašování.

Přidání dílčí cesty k resetování hesla

Uživatel se teď může přihlásit, zaregistrovat a provést resetování hesla na cestě uživatele. Pokud chcete lépe uspořádat cestu uživatele, můžete použít dílčí cestu ke zpracování toku resetování hesla.

Dílčí cesta se volá z cesty uživatele a provádí konkrétní kroky, které uživateli doručují prostředí pro resetování hesla. Call Použijte dílčí cestu typu, aby se po dokončení dílčí cesty vrátil ovládací prvek do kroku orchestrace, který inicioval dílčí cestu.

  1. Otevřete soubor přípon zásad, například SocialAndLocalAccounts/TrustFrameworkExtensions.xml.
  2. Najděte element SubJourneys. Pokud prvek neexistuje, přidejte ho za element User Journeys . Pak přidejte následující dílčí cestu:
<!--
<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>-->

Příprava cesty uživatele

Dále pro připojení zapomenutého hesla? Odkaz na cestu Zapomenuté heslo budete muset odkazovat na ID cesty Zapomenuté heslo v elementu ClaimsProviderSelection v kroku CombinedSignInAndSignUp.

Pokud nemáte vlastní cestu uživatele, která obsahuje krok CombinedSignInAndSignUp , proveďte následující kroky a duplikujte stávající cestu uživatele pro registraci nebo přihlášení. V opačném případě pokračujte k další části.

  1. V úvodním balíčku otevřete soubor TrustFrameworkBase.xml , například SocialAndLocalAccounts/TrustFrameworkBase.xml.
  2. Najděte a zkopírujte celý obsah prvku UserJourney , který obsahuje Id="SignUpOrSignIn".
  3. Otevřete soubor TrustFrameworkExtensions.xml , například SocialAndLocalAccounts/TrustFrameworkExtensions.xml, a najděte element UserJourneys . Pokud prvek neexistuje, vytvořte ho.
  4. Vytvořte podřízený prvek UserJourneys element vložením celého obsahu UserJourney elementu, který jste zkopírovali v kroku 2.
  5. Přejmenujte ID cesty uživatele. Například, Id="CustomSignUpSignIn".

Na cestě uživatele můžete reprezentovat dílčí cestu Zapomenuté heslo jako ClaimsProviderSelection. Přidáním tohoto prvku připojíte odkaz Zapomenuté heslo? Odkaz na dílčí cestu Zapomenuté heslo.

  1. Otevřete soubor TrustFrameworkExtensions.xml, například SocialAndLocalAccounts/TrustFrameworkExtensions.xml.

  2. Na cestě uživatele vyhledejte prvek kroku orchestrace, který obsahuje Type="CombinedSignInAndSignUp" nebo Type="ClaimsProviderSelection". Obvykle se jedná o první krok orchestrace. Element ClaimsProviderSelections obsahuje seznam zprostředkovatelů identity, které uživatel může použít k přihlášení. Přidejte následující řádek:

    <ClaimsProviderSelection TargetClaimsExchangeId="ForgotPasswordExchange" />
    
  3. V dalším kroku orchestrace přidejte element ClaimsExchange přidáním následujícího řádku:

    <ClaimsExchange Id="ForgotPasswordExchange" TechnicalProfileReferenceId="ForgotPassword" />
    
  4. Přidejte mezi aktuální krok a další krok orchestrace následující krok orchestrace. Nový krok orchestrace, který přidáte, zkontroluje, zda existuje deklarace identity isForgotPassword . Pokud deklarace identity existuje, vyvolá dílčí cestu k resetování hesla.

    <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 přidání nového kroku orchestrace přečíslujte kroky postupně bez vynechání celých čísel od 1 do N.

Nastavení cesty uživatele ke spuštění

Teď, když jste upravili nebo vytvořili cestu uživatele, zadejte v části Předávající strana cestu, kterou azure AD B2C provede pro tuto vlastní zásadu.

  1. Otevřete soubor, který má element předávající strany , například SocialAndLocalAccounts/SignUpOrSignin.xml.

  2. V elementu RelyingParty vyhledejte DefaultUserJourney element.

  3. Aktualizujte DefaultUserJourney ReferenceId tak, aby odpovídalo ID cesty uživatele, do kterého jste přidali ClaimsProviderSelections.

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

Označení toku zapomenutého hesla do aplikace

Vaše aplikace může potřebovat zjistit, jestli se uživatel přihlásil pomocí toku zapomenutého hesla. Deklarace identity isForgotPassword obsahuje logickou hodnotu, která indikuje, že to udělal. Deklarace identity může být vydána v tokenu, který se odešle do vaší aplikace. V případě potřeby přidejte do výstupních deklarací identity v části Předávající strana isForgotPassword. Vaše aplikace může zkontrolovat deklaraci identity isForgotPassword a zjistit, jestli uživatel resetuje heslo.

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

Nahrání vlastních zásad

  1. Přihlaste se k portálu Azure.
  2. Pokud máte přístup k více tenantům, v horní nabídce vyberte ikonu Nastavení a v nabídce Adresáře a předplatná přepněte do tenanta Azure AD B2C.
  3. Na webu Azure Portal vyhledejte a vyberte Azure AD B2C.
  4. V nabídce v části Zásady vyberte Architekturu prostředí identit.
  5. Vyberte Nahrát vlastní zásady. V následujícím pořadí nahrajte soubory zásad, které jste změnili:
    1. Základní soubor vaší zásady, například TrustFrameworkBase.xml.
    2. Zásady rozšíření, například TrustFrameworkExtensions.xml.
    3. Zásady předávající strany, například SignUpSignIn.xml.

Otestování toku resetování hesla

  1. Vyberte tok uživatele pro registraci nebo přihlášení (doporučený typ), který chcete otestovat.
  2. Vyberte Spustit tok uživatele.
  3. V části Aplikace vyberte webovou aplikaci s názvem webapp1 , kterou jste zaregistrovali dříve. Adresa URL odpovědi by se měla zobrazit https://jwt.ms.
  4. Vyberte Spustit tok uživatele.
  5. Na registrační nebo přihlašovací stránce vyberte Zapomněli jste své heslo?.
  6. Ověřte e-mailovou adresu účtu, který jste vytvořili dříve, a pak vyberte Pokračovat.
  7. V zobrazeném dialogovém okně změňte heslo uživatele a pak vyberte Pokračovat. Token se vrátí a https://jwt.ms prohlížeč ho zobrazí.
  8. Zkontrolujte hodnotu deklarace identity return tokenu isForgotPassword . Pokud existuje a je nastavená, trueuživatel resetuje heslo.

Zásady resetování hesla (starší verze)

Pokud samoobslužné resetování hesla není povolené, po výběru tohoto odkazu se automaticky neaktivuje tok uživatele pro resetování hesla. Místo toho se kód AADB2C90118 chyby vrátí do vaší aplikace. Vaše aplikace musí tento kód chyby zpracovat opětovnou inicializací knihovny ověřování pro ověření toku uživatele resetování hesla Azure AD B2C.

Následující diagram znázorňuje proces:

  1. V aplikaci uživatel vybere možnost Přihlásit se. Aplikace zahájí žádost o autorizaci a přesměruje ji do Azure AD B2C, aby uživatel mohl dokončit přihlášení. Žádost o autorizaci určuje název zásady registrace nebo přihlášení, například B2C_1_signup_signin.

  2. Uživatel vybere odkaz Zapomenuté heslo? Azure AD B2C vrátí AADB2C90118 do aplikace kód chyby.

  3. Aplikace zpracuje kód chyby a zahájí novou žádost o autorizaci. Žádost o autorizaci určuje název zásady resetování hesla, například B2C_1_pwd_reset.

    Diagram that shows the legacy password reset user flow.

Můžete si prohlédnout základní ukázku ASP.NET, která ukazuje, jak toky uživatelů propojují.

Vytvoření toku uživatele resetování hesla

Pokud chcete uživatelům aplikace umožnit resetovat hesla, vytvořte tok uživatele pro resetování hesla:

  1. Na webu Azure Portal přejděte na přehled tenanta Azure AD B2C.
  2. V nabídce vlevo v části Zásady vyberte Toky uživatelů a pak vyberte Nový tok uživatele.
  3. V části Vytvořit tok uživatele vyberte tok uživatele resetování hesla.
  4. V části Vybrat verzi vyberte Doporučené a pak vyberte Vytvořit.
  5. Do pole Název zadejte název toku uživatele. Například passwordreset1.
  6. U zprostředkovatelů identity povolte resetování hesla pomocí uživatelského jména nebo resetování hesla pomocí e-mailové adresy.
  7. Pokud chcete v části Vícefaktorové ověřování vyžadovat, aby uživatelé ověřili své identity pomocí druhé metody ověřování, vyberte typ metody a kdy chcete vynutit vícefaktorové ověřování. Další informace.
  8. Pokud jste v části Podmíněný přístup nakonfigurovali zásady podmíněného přístupu pro tenanta Azure AD B2C a chcete je použít v tomto toku uživatele, zaškrtněte políčko Vynutit zásady podmíněného přístupu. Nemusíte zadávat název zásady. Další informace.
  9. V části Deklarace identity aplikace vyberte Zobrazit více. Zvolte deklarace identity, které chcete vrátit v autorizačních tokenech, které se posílají zpět do vaší aplikace. Vyberte například ID objektu uživatele.
  10. Vyberte OK.
  11. Vyberte Vytvořit a přidejte tok uživatele. Do názvu se automaticky přidá předpona B2C_1 .

Testování toku uživatele

Otestování toku uživatele:

  1. Vyberte tok uživatele, který jste vytvořili. Na stránce přehledu toku uživatele vyberte Spustit tok uživatele.
  2. V části Aplikace vyberte webovou aplikaci, kterou chcete otestovat, například webovou aplikaci s názvem 1 , pokud jste ji zaregistrovali dříve. Adresa URL odpovědi by měla být https://jwt.ms.
  3. Vyberte Spustit tok uživatele, ověřte e-mailovou adresu účtu, pro který chcete resetovat heslo, a pak vyberte Pokračovat.
  4. Změňte heslo a pak vyberte Pokračovat. Token se vrátí a https://jwt.ms prohlížeč ho zobrazí.

Vytvoření zásady resetování hesla

Vlastní zásady jsou sada souborů XML, které nahrajete do tenanta Azure AD B2C a definují cesty uživatelů. Poskytujeme úvodní balíčky , které mají několik předdefinovaných zásad, včetně registrace a přihlášení, resetování hesla a zásad úprav profilu. Další informace najdete v tématu Začínáme s vlastními zásadami v Azure AD B2C.

Řešení potíží s toky uživatelů Azure AD B2C a vlastními zásadami

Vaše aplikace musí zpracovávat určité chyby pocházející ze služby Azure B2C. Zjistěte , jak řešit potíže s toky uživatelů Azure AD B2C a vlastními zásadami.

Další kroky

Nastavte vynucené resetování hesla.

Registrace a přihlášení pomocí vloženého resetování hesla