備註
在 Azure Active Directory B2C 中, 自定義原則 的設計主要是為了解決複雜的案例。 在大部分情況下,我們建議您使用內 建的使用者流程。 如果您尚未這麼做,請了解開始使用 Active Directory B2C 中的自定義原則入門套件。
這很重要
自 2025 年 5 月 1 日起,Azure AD B2C 將不再可供新客戶購買。 在我們的常見問題中深入瞭解。
Azure Active Directory B2C (Azure AD B2C) 支持驗證自助式密碼重設的電子郵件位址(SSPR)。 使用 Microsoft Entra ID SSPR 技術設定檔來產生程式代碼,並將程式代碼傳送至電子郵件地址,然後驗證程式代碼。 Microsoft Entra ID SSPR 技術配置檔也可能傳回錯誤訊息。 驗證技術配置檔會在使用者旅程繼續之前驗證使用者提供的數據。 使用驗證技術配置檔時,錯誤消息會顯示在自斷言頁面上。
此技術設定檔:
- 不提供與使用者交互的介面。 相反,使用者介面是從自斷言的技術配置檔中調用的,或者從作為驗證技術配置文件的顯示控件中調用。
- 使用 Microsoft Entra SSPR 服務來產生程式代碼,並將程式代碼傳送至電子郵件地址,然後驗證程式代碼。
- 透過驗證碼驗證電子郵件位址。
協定
Protocol 元素的 Name 屬性必須設定為 Proprietary
。
handler 屬性必須包含 Azure AD B2C 使用的協定處理程式程式集的完全限定名稱:
Web.TPEngine.Providers.AadSsprProtocolProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
下列範例顯示Microsoft Entra ID SSPR 技術設定檔:
<TechnicalProfile Id="AadSspr-SendCode">
<DisplayName>Send Code</DisplayName>
<Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.AadSsprProtocolProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
...
傳送電子郵件
此技術配置檔的第一個模式是產生程式代碼並傳送。 您可以為此模式設定下列選項。
輸入宣告
InputClaims 元素包含要傳送至 entra SSPR Microsoft宣告清單。 您也可以將宣告的名稱對應至 SSPR 技術設定檔中定義的名稱。
ClaimReferenceId | 為必填項目 | 說明 |
---|---|---|
電子郵件地址 | 是的 | 擁有電子郵件地址之使用者的識別碼。 輸入 PartnerClaimType 宣告的 屬性必須設定為 emailAddress 。 |
InputClaimsTransformations 元素可能包含 InputClaimsTransformation 元素的集合,這些元素可用來修改輸入宣告或產生新專案,然後再傳送至Microsoft Entra SSPR 服務。
輸出宣告
Microsoft Entra SSPR 通訊協定提供者不會傳回任何 OutputClaims,因此不需要指定輸出宣告。 不過,只要設定 屬性,您就可以包含Microsoft Entra SSPR 通訊協定提供者未傳回的 DefaultValue
宣告。
OutputClaimsTransformations 元素可能包含 OutputClaimsTransformation 元素的集合,這些元素可用來修改輸出宣告或產生新的宣告。
後設資料
屬性 | 為必填項目 | 說明 |
---|---|---|
行動 | 是的 | 必須是 SendCode。 |
UI 元素
以下元數據可用於配置發送SMS失敗時顯示的錯誤消息。 元數據應在 自斷言 技術配置檔中配置。 錯誤訊息可以 當地語系化。
屬性 | 為必填項目 | 說明 |
---|---|---|
UserMessageIfInternalError | 否 | 如果伺服器遇到內部錯誤,則顯示User Error消息。 |
UserMessageIfThrottled | 否 | 如果請求受到限制,則顯示使用者錯誤消息。 |
範例:傳送電子郵件
下列範例顯示用來透過電子郵件傳送程式代碼的 Microsoft Entra ID SSPR 技術配置檔。
<TechnicalProfile Id="AadSspr-SendCode">
<DisplayName>Send Code</DisplayName>
<Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.AadSsprProtocolProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
<Metadata>
<Item Key="Operation">SendCode</Item>
</Metadata>
<InputClaims>
<InputClaim ClaimTypeReferenceId="email" PartnerClaimType="emailAddress"/>
</InputClaims>
</TechnicalProfile>
檢查驗證碼
此技術配置檔的第二個模式是驗證程序代碼。 您可以為此模式設定下列選項。
輸入宣告
InputClaims 元素包含要傳送至 entra SSPR Microsoft宣告清單。 您也可以將宣告的名稱對應至 SSPR 技術設定檔中定義的名稱。
ClaimReferenceId | 為必填項目 | 說明 |
---|---|---|
電子郵件地址 | 是的 | 與先前用來傳送程式代碼的電子郵件位址相同。 它也可用來尋找電子郵件驗證會話。 輸入 PartnerClaimType 宣告的 屬性必須設定為 emailAddress 。 |
驗證碼 | 是的 | 要驗證之使用者所提供的驗證碼。 輸入 PartnerClaimType 宣告的 屬性必須設定為 verificationCode 。 |
InputClaimsTransformations 元素可能包含 InputClaimsTransformation 元素的集合,這些專案可用來修改輸入宣告,或在呼叫 Microsoft Entra SSPR 服務之前產生新的宣告。
輸出宣告
Microsoft Entra SSPR 通訊協定提供者不會傳回任何 OutputClaims,因此不需要指定輸出宣告。 不過,只要設定 屬性,您就可以包含Microsoft Entra SSPR 通訊協定提供者未傳回的 DefaultValue
宣告。
OutputClaimsTransformations 元素可能包含 OutputClaimsTransformation 元素的集合,這些元素可用來修改輸出宣告或產生新的宣告。
後設資料
屬性 | 為必填項目 | 說明 |
---|---|---|
行動 | 是的 | 必須是 VerifyCode |
UI 元素
以下元數據可用於配置代碼驗證失敗時顯示的錯誤消息。 元數據應在 自斷言 技術配置檔中配置。 錯誤訊息可以 當地語系化。
屬性 | 為必填項目 | 說明 |
---|---|---|
UserMessageIfChallengeExpired | 如果代碼驗證會話已過期,則向用戶顯示的訊息。 程式代碼已過期,或從未針對指定的標識碼產生程式代碼。 | |
UserMessageIfInternalError | 如果伺服器遇到內部錯誤,則顯示User Error消息。 | |
UserMessageIfThrottled | 如果請求受到限制,則顯示使用者錯誤消息。 | |
UserMessageIfVerificationFailedNoRetry | 如果使用者提供無效的程式代碼,則向用戶顯示的訊息,且不允許使用者提供正確的程序代碼。 | |
UserMessageIfVerificationFailedRetryAllowed | 如果使用者已提供無效的程式代碼,則向用戶顯示的訊息,並允許使用者提供正確的程序代碼。 |
示例:驗證代碼
下列範例顯示用來驗證程序代碼的Microsoft Entra ID SSPR 技術配置檔。
<TechnicalProfile Id="AadSspr-VerifyCode">
<DisplayName>Verify Code</DisplayName>
<Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.AadSsprProtocolProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
<Metadata>
<Item Key="Operation">VerifyCode</Item>
</Metadata>
<InputClaims>
<InputClaim ClaimTypeReferenceId="verificationCode" PartnerClaimType="verificationCode" />
<InputClaim ClaimTypeReferenceId="email" PartnerClaimType="emailAddress"/>
</InputClaims>
</TechnicalProfile>