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, jak uživatelé pracují 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 požadované v tomto článku se pro každou metodu liší.

Při registraci a přihlášení může uživatel resetovat svoje vlastní heslo pomocí odkazu Zapomněli jste heslo? Tento samoobslužný tok 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 přihlašovací stránce a přihlašovací stránce uživatel vybere odkaz Zapomenuté 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 e-mailovému účtu uživatele. Uživatel zkopíruje ověřovací kód z e-mailu, zadá kód do dialogového okna Azure AD resetování hesla 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 tlačí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 heslo změnit pomocí samoobslužného toku resetování hesla, pokud heslo zapomene a chce ho resetovat. Zvolte jednu z těchto možností toku uživatele:

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

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 zopakovat ověření e-mailu. Pokud chcete skrýt tlačítko Změnit e-mail , můžete upravit šablony stylů CSS a skrýt 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>

Výchozí název tlačítka Změnit e-mail v selfAsserted.html je changeclaims. Pokud chcete najít název tlačítka, zkontrolujte na registrační stránce zdroj stránky pomocí nástroje prohlížeče, jako je Kontrola.

Požadavky

Nové prostředí pro resetování hesel je teď součástí zásad registrace nebo přihlášení. Když uživatel vybere odkaz Zapomněli jste heslo? Okamžitě se odešle 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 registrace 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 webu Azure Portal.
  2. Na panelu nástrojů portálu vyberte ikonu Adresáře a předplatná .
  3. V nastavení portálu | Podokno Adresáře a předplatná, vyhledejte Azure AD adresář B2C v seznamu názvů adresářů a pak vyberte Přepnout.
  4. V Azure Portal vyhledejte a vyberte Azure AD B2C.
  5. Vyberte toky uživatelů.
  6. Vyberte tok uživatele pro registraci nebo přihlášení (podle typu Doporučené), který chcete přizpůsobit.
  7. V nabídce pod Nastavení vyberte Vlastnosti.
  8. V části Konfigurace hesla vyberte Samoobslužné resetování hesla.
  9. Vyberte Uložit.
  10. V nabídce vlevo v části Přizpůsobit vyberte Rozložení stránky.
  11. Ve verzi rozložení stránky vyberte 2.1.3 nebo novější.
  12. Vyberte 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í úvodní sady vlastních zásad.

Tip

Kompletní ukázku zásad registrace a přihlášení pomocí zásad resetování hesla najdete v GitHub.

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 k technickému profilu Zapomenuté heslo . Deklarace identity může být také vystavena 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. Přidejte následující deklaraci identity 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> -->
    

Upgrade verze rozložení stránky

Rozložení stránky verze 2.1.2 je nutné k povolení samoobslužného resetování hesla v cestě k registraci nebo přihlášení. Upgrade verze rozložení stránky:

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

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

  3. Upravte prvek DataURI v elementu ContentDefinition tak, aby měl 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> -->
    

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 true. 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 vaší cestě uživatele.

Správce relací LocalAccountWritePasswordUsingObjectIdUseTechnicalProfileForSessionManagementSM-AAD vyžaduje, aby uživatel úspěšně vytvořil následné 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 se a provést resetování hesla na cestě uživatele. K lepšímu uspořádání cesty 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.

Najděte element SubJourneys . Pokud prvek neexistuje, přidejte ho za prvek 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 připojte heslo Zapomněli jste? Odkaz na dílčí cestu Zapomenuté heslo. Odkaz na ID dílčí cesty Zapomenuté heslo v elementu ClaimsProviderSelection v kroku CombinedSignInAndSignUp .

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

  1. V úvodním balíčku otevřete souborTrustFrameworkBase.xml .
  2. Najděte a zkopírujte celý obsah prvku UserJourney , který obsahuje Id="SignUpOrSignIn".
  3. Otevřete TrustFrameworkExtensions.xml a najděte element UserJourneys . Pokud prvek neexistuje, přidejte ho.
  4. Vytvořte podřízený prvek elementu UserJourneys vložením celého obsahu elementu UserJourney , 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 deklaraceProviderSelection. Přidáním tohoto prvku připojíte zapomenuté heslo? Odkaz na dílčí cestu Zapomenuté heslo.

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

    <ClaimsProviderSelection TargetClaimsExchangeId="ForgotPasswordExchange" />
    
  2. V dalším kroku orchestrace přidejte element ClaimsExchange . Přidejte následující řádek:

    <ClaimsExchange Id="ForgotPasswordExchange" TechnicalProfileReferenceId="ForgotPassword" />
    
  3. Přidejte následující krok orchestrace mezi aktuálním krokem a dalším krokem. Nový krok orchestrace, který přidáte, zkontroluje, jestli existuje deklarace identityForgotPassword . 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>
    
  4. Po přidání nového kroku orchestrace přečíslujte kroky postupně bez přeskočení celých čísel od 1 do N.

Nastavte cestu uživatele, která se má spustit.

Teď, když jste upravili nebo vytvořili cestu uživatele, zadejte v části předávající strany cestu, kterou Azure AD B2C provede pro tuto vlastní zásadu. V elementu RelyingParty vyhledejte element DefaultUserJourney . Aktualizujte DefaultUserJourney ReferenceId tak, aby odpovídalo ID cesty uživatele, do které jste přidali DeklaraceProviderSelections.

<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á označuje, že to udělal. Deklarace identity se dá vystavit 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í stranykód 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>

Upload vlastní zásady

  1. Přihlaste se k webu Azure Portal.
  2. Na panelu nástrojů portálu vyberte ikonu Adresáře a předplatná .
  3. V nastavení portálu | Podokno Adresáře a předplatná, vyhledejte Azure AD adresář B2C v seznamu názvů adresářů a pak vyberte Přepnout.
  4. V Azure Portal vyhledejte a vyberte Azure AD B2C.
  5. V nabídce v části Zásady vyberte Rozhraní prostředí identit.
  6. Vyberte Upload vlastní zásady. V následujícím pořadí nahrajte dva soubory zásad, které jste změnili:
    1. Zásady rozšíření, například TrustFrameworkExtensions.xml.
    2. Zásady předávající strany, například SignUpSignIn.xml.

Otestování toku resetování hesla

  1. Vyberte tok registrace nebo přihlášení uživatele (doporučený typ), který chcete otestovat.
  2. Vyberte Spustit tok uživatele.
  3. V případě aplikace vyberte webovou aplikaci s názvem webapp1 , kterou jste zaregistrovali dříve. Adresa URL odpovědi by měla být zobrazena https://jwt.ms.
  4. Vyberte Spustit tok uživatele.
  5. Na registrační nebo přihlašovací stránce vyberte Zapomněli jste 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 tokenuForgotPassword . Pokud existuje a je nastaven na true, uživatel resetuje heslo.

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

Pokud není povolené samoobslužné resetování hesla , výběr tohoto odkazu 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ětovným inicializací knihovny ověřování pro ověření Azure AD toku uživatele resetování hesla 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 na Azure AD B2C, aby mohl uživatel 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 kód chyby do aplikace.

  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.

Zobrazí se základní ukázka ASP.NET, která ukazuje, jak toky uživatelů propojují.

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

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

  1. V 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 tokuživatele resetování hesla .
  4. V části Vybrat verzi vyberte Doporučené a pak vyberte Vytvořit.
  5. Jako 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í. Přečtěte si další informace.
  8. Pokud jste v části Podmíněný přístup nakonfigurovali zásady podmíněného přístupu pro vašeho 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. Přečtěte si další informace.
  9. V části Deklarace identity aplikace vyberte Zobrazit více. Zvolte deklarace identity, které chcete vrátit v autorizačních tokenech odesílaných zpět do vaší aplikace. Vyberte například ID objektu uživatele.
  10. Vyberte OK.
  11. Výběrem možnosti Vytvořit přidáte tok uživatele. Do názvu se automaticky přidá předpona B2C_1 .

Otestování toku uživatele

Testová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 případě aplikace vyberte webovou aplikaci s názvem webapp1 , kterou jste 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, který jste vytvořili dříve, 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é nahráváte 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ů B2C a vlastními zásadami Azure AD B2C

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 Azure AD toky uživatelů 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