訓練
認證
Microsoft Certified: Identity and Access Administrator Associate - Certifications
示範 Microsoft Entra ID 的功能,以現代化身分識別解決方案、實作混合式解決方案,以及實作身分識別治理。
開始之前,請使用 [選擇原則類型 選取器] 來選擇您要設定的原則類型。 Azure Active Directory B2C 提供兩種方法來定義使用者如何與您的應用程式互動:透過預先 定義的使用者流程 ,或透過完全可設定 的自定義原則。 本文中每個方法所需的步驟都不同。
在註冊和登入旅程圖中,用戶可以使用忘記密碼來重設自己的密碼? 此自助式密碼重設流程適用於使用電子郵件位址或具有密碼登入之 Azure Active Directory B2C (Azure AD B2C) 中的本機帳戶。
密碼重設流程牽涉到下列步驟:
提示
如果使用者忘記密碼並想要重設密碼,則可以使用自助式密碼重設流程來變更其密碼。 您也可以選擇下列其中一個使用者流程選項:
selfAsserted.html 中 [變更電子郵件] 按鈕的預設名稱是 changeclaims。 若要尋找按鈕名稱,請在註冊頁面上,使用 [檢查] 等瀏覽器工具來檢查頁面來源。
驗證電子郵件之後,使用者仍然可以選取 [變更電子郵件]、輸入另一個電子郵件地址,然後重複電子郵件驗證。 如果您要隱藏 [ 變更電子郵件 ] 按鈕,您可以修改 CSS 來隱藏對話框中相關聯的 HTML 元素。 例如,您可以將下列 CSS 專案新增至 selfAsserted.html,並使用 HTML 範本自定義使用者介面:
<style type="text/css">
.changeClaims
{
visibility: hidden;
}
</style>
新的密碼重設體驗現在是註冊或登入原則的一部分。 當使用者選取 [忘記密碼嗎? ] 連結時,系統會立即將他們傳送至忘記密碼體驗。 您的應用程式不再需要處理 AADB2C90118錯誤碼,而且您不需要個別的原則來重設密碼。
自助式密碼重設體驗可以針對 [登入] 或 [建議] 或 [註冊和登入] 使用者流程進行設定。 如果您沒有設定其中一個使用者流程,請建立 註冊或登入 使用者流程。
若要設定註冊或登入使用者流程的自助式密碼重設:
下列各節說明如何將自助式密碼體驗新增至自定義原則。 此範例是以自定義原則入門套件中包含的原則檔案為基礎。
提示
您可以在 GitHub 上找到註冊和使用密碼重設原則登入的完整範例。
若要指示用戶選取 [忘記密碼嗎?] 鏈接的原則,請定義布爾宣告。 使用宣告將使用者旅程 導向至忘記密碼 技術配置檔。 宣告也可以發出至令牌,因此應用程式會偵測使用者使用忘記密碼使用者流程登入。
在宣告架構中宣告您的宣告。 在 SocialAndLocalAccounts/TrustFrameworkExtensions.xml 中開啟原則的擴展名檔案。
搜尋 BuildingBlocks 元素。 如果專案不存在,請加以新增。
找出 ClaimsSchema 元素。 如果專案不存在,請加以新增。
將下列宣告新增至 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> -->
需要版面配置 2.1.2 版,才能在註冊或登入旅程圖中啟用自助式密碼重設流程。 若要升級版面配置版本:
開啟原則的基底檔案,例如 SocialAndLocalAccounts/TrustFrameworkBase.xml。
搜尋 BuildingBlocks 元素。 如果專案不存在,請加以新增。
找出 ContentDefinitions 元素。 如果專案不存在,請加以新增。
修改 ContentDefinition 元素內的 DataURI 元素,以具有識別碼 api.signuporsignin
:
<!--
<BuildingBlocks>
<ContentDefinitions> -->
<ContentDefinition Id="api.signuporsignin">
<DataUri>urn:com:microsoft:aad:b2c:elements:contract:unifiedssp:2.1.2</DataUri>
</ContentDefinition>
<!--
</ContentDefinitions>
</BuildingBlocks> -->
宣告轉換技術配置檔會 isForgotPassword
存取宣告。 稍後會參考技術配置檔。 叫用時,它會將宣告的值 isForgotPassword
設定為 true
。
<!--
<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> -->
SelfAsserted-LocalAccountSignin-Email 技術配置檔設定.forgotPasswordLinkOverride 會定義在您的使用者旅程圖中執行的密碼重設宣告交換。
需要 LocalAccountWritePasswordUsingObjectId 技術配置檔 UseTechnicalProfileForSessionManagementSM-AAD
會話管理員,使用者才能在 SSO 條件下成功預先建立後續登入。
用戶現在可以在使用者旅程圖中登入、註冊和執行密碼重設。 若要更妥善地組織使用者旅程圖,您可以使用 子旅程 來處理密碼重設流程。
子旅程圖會從使用者旅程圖呼叫,並執行將密碼重設體驗傳遞給使用者的特定步驟。 Call
使用類型子旅程圖,讓子旅程完成時,控制權會傳回起始子旅程的協調流程步驟。
<!--
<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>-->
接下來,若要連接忘記密碼?連結至忘記密碼子旅程圖,您必須參考 CombinedSignInAndSignUp 步驟之 ClaimsProviderSelection 元素中的忘記密碼子旅程標識符。
如果您沒有具有 CombinedSignInAndSignUp 步驟的自定義使用者旅程圖,請完成下列步驟來複製現有的註冊或登入使用者旅程圖。 否則,請繼續進行下一節。
Id="SignUpOrSignIn"
之 UserJourney 元素的整個內容。Id="CustomSignUpSignIn"
。在您的使用者旅程圖中,您可以將 [忘記密碼] 子旅程圖表示為 ClaimsProviderSelection。 藉由新增此元素,您會將 [忘記密碼?] 鏈接連接到 [忘記密碼] 子旅程圖。
開啟 TrustFrameworkExtensions.xml 檔案,例如 SocialAndLocalAccounts/TrustFrameworkExtensions.xml。
在使用者旅程圖中,尋找包含 Type="CombinedSignInAndSignUp"
或 Type="ClaimsProviderSelection"
的協調流程步驟元素。 通常是第一個協調流程步驟。 ClaimsProviderSelections 元素包含用戶可用來登入的識別提供者清單。 新增下列這一行:
<ClaimsProviderSelection TargetClaimsExchangeId="ForgotPasswordExchange" />
在下一個 協調流程步驟中,新增 ClaimsExchange 元素,方法是新增下列這一行:
<ClaimsExchange Id="ForgotPasswordExchange" TechnicalProfileReferenceId="ForgotPassword" />
在目前步驟和下一個步驟之間新增下列協調流程步驟。 您新增的新協調流程步驟會檢查 isForgotPassword 宣告是否存在。 如果宣告存在,它會叫用 密碼重設子旅程圖。
<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>
新增協調流程步驟之後,請循序重新編號步驟,而不需要略過從 1 到 N 的任何整數。
既然您已修改或建立使用者旅程圖,請在 [信賴憑證者 ] 區段中指定 Azure AD B2C 針對此自定義原則執行的旅程。
開啟具有 信賴憑證者 元素的檔案,例如 SocialAndLocalAccounts/SignUpOrSignin.xml。
在 RelyingParty 元素中 ,尋找 DefaultUserJourney 元素。
更新 DefaultUserJourney ReferenceId,以符合您新增 ClaimsProviderSelections 的使用者旅程圖標識符。
<RelyingParty>
<DefaultUserJourney ReferenceId="CustomSignUpSignIn" />
...
</RelyingParty>
您的應用程式可能需要偵測使用者是否使用忘記密碼使用者流程登入。 isForgotPassword 宣告包含布爾值,指出它們已執行。 宣告可以在傳送至應用程式的令牌中發出。 如有必要,請將isForgotPassword 新增至信賴憑證者區段中的輸出宣告。 您的應用程式可以檢查 isForgotPassword 宣告,以判斷使用者是否重設其密碼。
<RelyingParty>
<OutputClaims>
...
<OutputClaim ClaimTypeReferenceId="isForgotPassword" DefaultValue="false" />
</OutputClaims>
</RelyingParty>
https://jwt.ms
。https://jwt.ms
而瀏覽器會顯示它。true
,則使用者已重設密碼。如果未啟用自助式密碼重設體驗,選取此連結不會自動觸發密碼重設使用者流程。 相反地,錯誤碼 AADB2C90118
會傳回至您的應用程式。 您的應用程式必須重新初始化驗證連結庫,以驗證 Azure AD B2C 密碼重設使用者流程,以處理此錯誤碼。
下圖描述此程式:
在應用程式中,用戶選取 [登入]。 應用程式會起始授權要求,並重新導向至 Azure AD B2C,讓使用者完成登入。 授權要求會指定註冊或登入原則名稱,例如 B2C_1_signup_signin。
用戶選取 [ 忘記密碼嗎?] 連結。 Azure AD B2C 會將 AADB2C90118
錯誤碼傳回給應用程式。
應用程式會處理錯誤碼並起始新的授權要求。 授權要求會指定密碼重設原則名稱,例如 B2C_1_pwd_reset。
您可以看到基本的 ASP.NET 範例,示範使用者流程連結的方式。
若要讓您的應用程式使用者重設其密碼,請建立密碼重設使用者流程:
若要測試使用者流程:
https://jwt.ms
。https://jwt.ms
而瀏覽器會顯示它。自定義原則是一組 XML 檔案,您上傳至 Azure AD B2C 租使用者以定義使用者旅程圖。 我們提供具有數個預先建置原則的入門套件,包括註冊和登入、密碼重設和配置檔編輯原則。 如需詳細資訊,請參閱 開始使用 Azure AD B2C 中的自定義原則。
您的應用程式必須處理來自 Azure B2C 服務的特定錯誤。 瞭解如何 針對 Azure AD B2C 的使用者流程和自定義原則進行疑難解答。
設定 強制密碼重設。
使用內嵌密碼重設註冊和登入。
訓練
認證
Microsoft Certified: Identity and Access Administrator Associate - Certifications
示範 Microsoft Entra ID 的功能,以現代化身分識別解決方案、實作混合式解決方案,以及實作身分識別治理。
文件
了解如何設定自訂原則,以讓使用者在 Azure Active Directory B2C 中變更自己的密碼。
了解如何在 Azure Active Directory B2C 中設定設定檔編輯流程。
Azure Active Directory B2C 自定義原則概觀
關於 Azure Active Directory B2C 自定義原則和身分識別體驗架構的主題。