Azure ad b2c 在B2C中,如何更改MFA电话号码或电子邮件,甚至更改方法

Azure ad b2c 在B2C中,如何更改MFA电话号码或电子邮件,甚至更改方法,azure-ad-b2c,Azure Ad B2c,我使用的是“B2C IEF自定义策略-使用MFA方法选择(电话/电子邮件)登录”。这很有效 宣传栏上写着“可以通过个人资料编辑更改此偏好”,但我在政策中没有看到这一点 我的使用案例是,用户可以更改MFA的电话号码或电子邮件地址,或者根据MFA在两者之间进行swop(例如,将电话更改为电子邮件,反之亦然) 最简单的方法是“重置”MFA,并要求用户再次安装MFA 所以我将“extension_mfaByPhoneOrEmail”设置为“reset”,然后策略说: <!-- If user is

我使用的是“B2C IEF自定义策略-使用MFA方法选择(电话/电子邮件)登录”。这很有效

宣传栏上写着“可以通过个人资料编辑更改此偏好”,但我在政策中没有看到这一点

我的使用案例是,用户可以更改MFA的电话号码或电子邮件地址,或者根据MFA在两者之间进行swop(例如,将电话更改为电子邮件,反之亦然)

最简单的方法是“重置”MFA,并要求用户再次安装MFA

所以我将“extension_mfaByPhoneOrEmail”设置为“reset”,然后策略说:

<!-- If user is enrolled for MFA, ask the user to select the preferred method -->
                <OrchestrationStep Order="4" Type="ClaimsExchange">
                    <Preconditions>
                    <!-- If the preferred MFA method is 'phone' skip this orchestration step -->
                        <Precondition Type="ClaimEquals" ExecuteActionsIf="true">
                            <Value>extension_mfaByPhoneOrEmail</Value>
                            <Value>phone</Value>
                            <Action>SkipThisOrchestrationStep</Action>
                        </Precondition>
                        <!-- If the preferred MFA method is 'email' skip this orchestration step -->
                        <Precondition Type="ClaimEquals" ExecuteActionsIf="true">
                            <Value>extension_mfaByPhoneOrEmail</Value>
                            <Value>email</Value>
                            <Action>SkipThisOrchestrationStep</Action>
                        </Precondition>
                        
                    </Preconditions>
                    <ClaimsExchanges>
                        <ClaimsExchange Id="SelfAsserted-Select-MFA-Method" TechnicalProfileReferenceId="SelfAsserted-Select-MFA-Method"/>
                    </ClaimsExchanges>
                </OrchestrationStep>

扩展_mfaByPhoneOrEmail
电话
扩展名为“mfaByPhoneOrEmail”索赔

然后,用户可以再次为MFA选择电子邮件或电话

但如果用户已经在使用手机,手机会显示“我们有一部手机记录”,并且无法更改

我通过使用“编辑MFA”解决了这个问题

有没有办法把电话号码弄清楚

此声明是无法通过DelateClaims方法删除的声明之一

更新2

我包括了DeleteClaims和包含此内容的用户旅程

如果仍然存在问题,请尝试在“Self-Asserted Select MFA Method”中注释检查“extension_mfaByPhoneOrEmail”


删除索赔
认证源
社交身份验证
SkipThisOrchestrationStep
扩展_mfaByPhoneOrEmail
SkipThisOrchestrationStep

在配置文件编辑技术配置文件中添加
扩展名\u mfaByPhoneOrEmail
作为输出声明。启动包使用名为
自断言配置文件更新的技术配置文件

然后通过添加
扩展名\u mfaByPhoneOrEmail
将该属性保存到目录中,作为技术配置文件
AAD UserWriteProfileUsingObjectId
的持久声明

您可以在此处阅读有关自断言技术配置文件的输出声明:


您可以在此处阅读有关使用Azure AD技术配置文件将数据持久化到目录的信息:

在您的配置文件编辑技术配置文件中将
扩展添加为输出声明。\u mfaByPhoneOrEmail
。启动包使用名为
自断言配置文件更新的技术配置文件

然后通过添加
扩展名\u mfaByPhoneOrEmail
将该属性保存到目录中,作为技术配置文件
AAD UserWriteProfileUsingObjectId
的持久声明

您可以在此处阅读有关自断言技术配置文件的输出声明:


您可以在此处阅读有关使用Azure AD技术配置文件将数据持久化到目录的信息:

谢谢-请参阅更新。谢谢-请参阅更新。您好,我也面临同样的问题。您是否可以分享您在自定义策略中所做的更改以使其正常工作,我在过去两天中一直在挠头以使其正常工作。对于新用户来说,该问题很好em只是在重置MFA时,感谢advanceDone-如上所述。您好,我面临着同样的问题。您能否分享您在自定义策略中所做的更改以使其正常工作,我在过去两天中挠头以使其正常工作。对于新用户,它工作正常。问题就在重置MFA时,感谢advanceDone-如上所述。
<TechnicalProfile Id="AAD-DeleteClaimsUsingObjectId">
    <Metadata>
        <Item Key="Operation">DeleteClaims</Item>
    </Metadata>
    <InputClaims>
        <InputClaim ClaimTypeReferenceId="objectId" Required="true"/>
    </InputClaims>
    <PersistedClaims>
        <PersistedClaim ClaimTypeReferenceId="objectId"/>
        <PersistedClaim ClaimTypeReferenceId="extension_mfaByPhoneOrEmail"/>
        <PersistedClaim ClaimTypeReferenceId="Verified.strongAuthenticationPhoneNumber" PartnerClaimType="strongAuthenticationPhoneNumber"/>
    </PersistedClaims>
    <OutputClaims/>
    <IncludeTechnicalProfile ReferenceId="AAD-Common"/>
</TechnicalProfile>

<OrchestrationStep Order="3" Type="ClaimsExchange">
    <ClaimsExchanges>
        <ClaimsExchange Id="B2CUserProfileDeleteExchange" TechnicalProfileReferenceId="AAD-DeleteClaimsUsingObjectId"/>
    </ClaimsExchanges>
</OrchestrationStep>

<OrchestrationStep Order="4" Type="ClaimsExchange">
    <ClaimsExchanges>
        <ClaimsExchange Id="B2CUserProfileUpdateExchange" TechnicalProfileReferenceId="AAD-UserWriteProfileUsingObjectId"/>
    </ClaimsExchanges>
</OrchestrationStep>

<!-- This step reads any user attributes that we may not have received when authenticating using ESTS so they can be sent 
          in the token. -->
<OrchestrationStep Order="5" Type="ClaimsExchange">
    <Preconditions>
        <Precondition Type="ClaimEquals" ExecuteActionsIf="true">
            <Value>authenticationSource</Value>
            <Value>socialIdpAuthentication</Value>
            <Action>SkipThisOrchestrationStep</Action>
        </Precondition>
    </Preconditions>
    <ClaimsExchanges>
        <ClaimsExchange Id="AADUserReadWithObjectId" TechnicalProfileReferenceId="AAD-UserReadUsingObjectId"/>
    </ClaimsExchanges>
</OrchestrationStep>


<!-- If user is enrolled for MFA, ask the user to change the preferred method or the email or phone number -->
<OrchestrationStep Order="6" Type="ClaimsExchange">
    <Preconditions>
        <Precondition Type="ClaimsExist" ExecuteActionsIf="true">
            <Value>extension_mfaByPhoneOrEmail</Value>
            <Action>SkipThisOrchestrationStep</Action>
        </Precondition>
    </Preconditions>
    <ClaimsExchanges>
        <ClaimsExchange Id="SelfAsserted-Select-MFA-Method" TechnicalProfileReferenceId="SelfAsserted-Select-MFA-Method"/>
    </ClaimsExchanges>
</OrchestrationStep>