共用方式為


在 Azure AD B2C 自定義原則中定義Microsoft項目識別碼 SSPR 技術配置檔

備註

在 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 屬性必須設定為 Proprietaryhandler 屬性必須包含 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>