在 Azure AD B2C 自訂原則中定義 Microsoft Entra ID SSPR 技術設定檔
注意
在 Azure Active Directory B2C 中, 自訂原則 的設計主要是為了解決複雜的案例。 在大部分情況下,我們建議您使用內 建的使用者流程 。 如果您尚未這麼做,請瞭解開始使用 Active Directory B2C 中的 自訂原則入門套件。
Azure Active Directory B2C (Azure AD B2C) 支援驗證自助式密碼重設的電子郵件地址(SSPR)。 使用 Microsoft Entra ID SSPR 技術設定檔來產生程式碼,並將程式碼傳送至電子郵件地址,然後驗證程式代碼。 Microsoft Entra ID SSPR 技術設定檔也可能傳回錯誤訊息。 驗證技術設定檔會在使用者旅程繼續之前驗證使用者提供的資料。 使用驗證技術設定檔時,錯誤訊息會顯示在自我判斷提示頁面上。
此技術設定檔:
- 不提供與使用者互動的介面。 相反地,使用者介面會從自我判斷 技術設定檔呼叫,或 顯示控制項 做為 驗證技術設定檔 。
- 使用 Microsoft Entra SSPR 服務來產生程式碼並將其傳送至電子郵件地址,然後驗證程式代碼。
- 透過驗證碼驗證電子郵件地址。
通訊協定
Protocol 元素的 Name 屬性必須設定為 Proprietary
。 處理常式 屬性必須包含 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 元素包含要傳送至 Microsoft Entra SSPR 的宣告清單。 您也可以將宣告的名稱對應至 SSPR 技術設定檔中定義的名稱。
ClaimReferenceId | 必要 | 描述 |
---|---|---|
emailAddress | Yes | 擁有電子郵件地址之使用者的識別碼。 輸入 PartnerClaimType 宣告的 屬性必須設定為 emailAddress 。 |
InputClaimsTransformations 元素可能包含 InputClaimsTransformation 元素的 集合,這些元素可用來修改輸入宣告,或在傳送至 Microsoft Entra SSPR 服務之前產生新的宣告。
輸出宣告
Microsoft Entra SSPR 通訊協定提供者不會傳回任何 OutputClaims ,因此不需要指定輸出宣告。 不過,只要設定 屬性,您就可以包含 Microsoft Entra SSPR 通訊協定提供者未傳回的 DefaultValue
宣告。
OutputClaimsTransformations 元素可能包含 OutputClaimsTransformation 元素的 集合,這些元素可用來修改輸出宣告或產生新的宣告。
中繼資料
屬性 | 必要 | 描述 |
---|---|---|
作業 | Yes | 必須是 SendCode 。 |
UI 元素
下列中繼資料可用來設定傳送 SMS 失敗時所顯示的錯誤訊息。 中繼資料應該在自我判斷 技術設定檔中 設定。 錯誤訊息可以 當地語系化 。
屬性 | 必要 | 描述 |
---|---|---|
UserMessageIfInternalError | No | 如果伺服器發生內部錯誤,則使用者錯誤訊息。 |
UserMessageIfThrottled | No | 如果要求已節流,使用者錯誤訊息。 |
範例:傳送電子郵件
下列範例顯示 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 元素包含要傳送至 Microsoft Entra SSPR 的宣告清單。 您也可以將宣告的名稱對應至 SSPR 技術設定檔中定義的名稱。
ClaimReferenceId | 必要 | 描述 |
---|---|---|
emailAddress | Yes | 與先前用來傳送程式碼的電子郵件地址相同。 它也可用來尋找電子郵件驗證會話。 輸入 PartnerClaimType 宣告的 屬性必須設定為 emailAddress 。 |
verificationCode | Yes | 要驗證之使用者所提供的驗證碼。 輸入 PartnerClaimType 宣告的 屬性必須設定為 verificationCode 。 |
InputClaimsTransformations 元素可能包含 InputClaimsTransformation 元素的 集合,這些元素可用來修改輸入宣告,或在呼叫 Microsoft Entra SSPR 服務之前產生新的宣告。
輸出宣告
Microsoft Entra SSPR 通訊協定提供者不會傳回任何 OutputClaims ,因此不需要指定輸出宣告。 不過,只要設定 屬性,您就可以包含 Microsoft Entra SSPR 通訊協定提供者未傳回的 DefaultValue
宣告。
OutputClaimsTransformations 元素可能包含 OutputClaimsTransformation 元素的 集合,這些元素可用來修改輸出宣告或產生新的宣告。
中繼資料
屬性 | 必要 | 描述 |
---|---|---|
作業 | Yes | 必須是 VerifyCode |
UI 元素
下列中繼資料可用來設定程式碼驗證失敗時所顯示的錯誤訊息。 中繼資料應該在自我判斷 技術設定檔中 設定。 錯誤訊息可以 當地語系化 。
屬性 | 必要 | 描述 |
---|---|---|
UserMessageIfChallengeExpired | 如果代碼驗證會話已過期,則向使用者顯示的訊息。 程式碼已過期,或從未針對指定的識別碼產生程式碼。 | |
UserMessageIfInternalError | 如果伺服器發生內部錯誤,則使用者錯誤訊息。 | |
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>