在Azure B2C自定义策略中,我们的业务流程要求意味着我们需要控制是否:
用户不得替换我们为其记录的手机号码(即首次设置密码的经验),或者
默认情况下,我们会显示我们为他们保留的号码,但允许用户改写并用新号码保存该号码(例如,登录的编辑个人资料体验)。
问题:是否可以让用户用新号码替换我们为他们保留的记录号码,也许是通过在本系列中添加新按钮[提供新号码]
[发送代码] [给我打电话] [提供新号码的新按钮] [取消]
PhoneFactor-InputOrVerify sample screen (image)
下面的代码是对B2C Custom Policy Starterpack中类似名称的策略的略微修改。
请注意,在此示例中,我们如何将存储在用户对象的mobile属性中的手机号码值提供为strongAuthenticationNumber。这是因为有currently no way of setting the MFA number programmatically。 (感谢您的帮助,Chris Padgett。)
除此之外,该策略与starterpack相同。
<ClaimsProvider>
<DisplayName>PhoneFactor</DisplayName>
<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">true</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="strongAuthenticationPhoneNumber" /-->
<InputClaim ClaimTypeReferenceId="mobile" PartnerClaimType="strongAuthenticationPhoneNumber" />
</InputClaims>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="Verified.strongAuthenticationPhoneNumber" PartnerClaimType="Verified.OfficePhone" />
<OutputClaim ClaimTypeReferenceId="newPhoneNumberEntered" PartnerClaimType="newPhoneNumberEntered" />
</OutputClaims>
<UseTechnicalProfileForSessionManagement ReferenceId="SM-MFA" />
</TechnicalProfile>
</TechnicalProfiles>
</ClaimsProvider>
我怀疑可能存在一些元数据设置来启用如上所述的按钮或文本输入框,但据我所知,尚有no documentation。
答案 0 :(得分:0)
您必须为此创建一个自定义流程: