我们正在使用 B2C 自定义策略。我们有一个验证函数,在用户浏览完自我声明页面后在注册时调用。如果电子邮件与本地用户数据库匹配,这将返回扩展声明已验证。此时它还会返回用户的手机号码。
如果电子邮件不匹配,我们将进行 PhoneFactor 代码验证。
我现在想更新 extension_Verified 标志,但我找不到这样做的方法。
我可以创建一个新声明,但我无法根据这两个声明设置登录的先决条件(如果 Verified 为 false,则希望验证移动设备)。
我尝试过使用声明转换,但这些似乎只适用于字符串声明(extension_Verified 是布尔值)。
我曾尝试使用 PartnerClaimType="extension_MobileVerified" 但它似乎没有得到更新。
<TechnicalProfiles>
<TechnicalProfile Id="PhoneFactor-InputOrVerify">
<DisplayName>PhoneFactor</DisplayName>
<Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.PhoneFactorProtocolProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
<Metadata>
<Item Key="ContentDefinitionReferenceId">api.phonefactor</Item>
<Item Key="ManualPhoneNumberEntryAllowed">false</Item>
</Metadata>
<CryptographicKeys>
<Key Id="issuer_secret" StorageReferenceId="B2C_1A_TokenSigningKeyContainer" />
</CryptographicKeys>
<InputClaimsTransformations>
<InputClaimsTransformation ReferenceId="CreateUserIdForMFA" />
</InputClaimsTransformations>
<InputClaims>
<InputClaim ClaimTypeReferenceId="userIdForMFA" PartnerClaimType="UserId" />
<InputClaim ClaimTypeReferenceId="extension_MemberMobile"/>
<InputClaim ClaimTypeReferenceId="strongAuthenticationPhoneNumber"/>
</InputClaims>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="Verified.strongAuthenticationPhoneNumber" PartnerClaimType="Verified.OfficePhone"/>
<!-- OfficePhone -->
<OutputClaim ClaimTypeReferenceId="newPhoneNumberEntered" PartnerClaimType="newPhoneNumberEntered"/>
<OutputClaim ClaimTypeReferenceId="extension_MobileVerified" DefaultValue="true" />
</OutputClaims>
<UseTechnicalProfileForSessionManagement ReferenceId="SM-MFA" />
</TechnicalProfile>
这确实会显示手机号码而不允许输入并返回新的索赔。
如何更新现有的索赔?