3

使用 AADB2C 身份体验框架自定义策略,我正在尝试创建一个允许多个社交提供者以及本地提供者的 UserJourney,但只允许登录,而不是注册。当我上传包含 UserJourney 的 TrustFrameworkExtensions 文件时,上传失败并出现以下错误:

无法上传政策。原因:验证失败:在租户“mytenant.onmicrosoft.com”的策略“B2C_1A_TRUSTFRAMEWORKEXTENSIONS”中发现 2 个验证错误。在租户“B2C_1A_TrustFrameworkExtensions”的策略“B2C_1A_TrustFrameworkExtensions”中的 UserJourney 中引用 ID 为“SignInWithLogonNameExchange”的索赔交换mytenant.onmicrosoft.com”,但未找到。在租户“MBHB2C.onmicrosoft.com”的策略“B2C_1A_TrustFrameworkExtensions”中,ID 为“SignInAny”的 UserJourney 中引用了 ID 为“SignInWithLogonNameExchange”的ClaimsExchange,但未找到。

我认为包含所有相关内容的 UserJourney 的第一部分是:

<UserJourney Id="SignInAny"> 
    <OrchestrationSteps> 
        <OrchestrationStep Order="1" Type="ClaimsProviderSelection" ContentDefinitionReferenceId="api.idpselections"> 
            <ClaimsProviderSelections> 

                <ClaimsProviderSelection TargetClaimsExchangeId="SignInWithLogonNameExchange" /> 
                <ClaimsProviderSelection TargetClaimsExchangeId="KDEWebAppTestExchange" /> 
                <ClaimsProviderSelection TargetClaimsExchangeId="MSAExchange" /> 
                <ClaimsProviderSelection TargetClaimsExchangeId="GoogleExchange" /> 
            </ClaimsProviderSelections> 

            <ClaimsExchanges> 
                <ClaimsExchange Id="SignInWithLogonNameExchange" TechnicalProfileReferenceId="SelfAsserted-LocalAccountSignin-Email" /> 
            </ClaimsExchanges> 
        </OrchestrationStep> 

        <!-- Check if the user has selected to sign in using one of the social providers --> 
        <OrchestrationStep Order="2" Type="ClaimsExchange"> 
            <Preconditions> 
                <Precondition Type="ClaimsExist" ExecuteActionsIf="true"> 
                    <Value>objectId</Value> 
                    <Action>SkipThisOrchestrationStep</Action> 
                </Precondition> 
            </Preconditions> 
            <ClaimsExchanges> 
                <ClaimsExchange Id="KDEWebAppTestExchange" TechnicalProfileReferenceId="KDEWebAppTestProfile" /> 
                <ClaimsExchange Id="MSAExchange" TechnicalProfileReferenceId="MSA-OIDC" /> 
                <ClaimsExchange Id="GoogleExchange" TechnicalProfileReferenceId="Google-OAUTH" /> 
            </ClaimsExchanges> 
        </OrchestrationStep> 
        ...
    </UserJourney> 
</OrchestrationSteps> 

我不明白它没有找到实际上意味着什么。

建议?

谢谢!

马丁

4

1 回答 1

2

基本上,在OrchestrationStep1Order中,您有以下行:

<ClaimsProviderSelection TargetClaimsExchangeId="SignInWithLogonNameExchange" /> 

是对 next 中元素的TargetClaimsExchangeId引用。但是,在下一步设置为 时,您没有与此类似的行。ClaimsExchangeOrchestrationStepIdSignInWithLogonNameExchange

<ClaimsExchange Id="GoogleExchange" TechnicalProfileReferenceId="Google-OAUTH" /> 

因此,当用户单击对应的按钮时,IEF 不知道该做什么(例如使用哪个技术配置文件)ClaimsProviderSelection

于 2017-12-15T18:15:12.813 回答