Ошибка проверки пользовательской политики

Используя пользовательские политики AADB2C Identity Experience Framework, я пытаюсь создать UserJourney, который позволяет нескольким социальным провайдерам, а также местным провайдерам, но разрешает только вход, а не регистрацию. Когда я загружаю файл TrustFrameworkExtensions, содержащий UserJourney, загрузка завершается с ошибкой:

Невозможно загрузить политику. Причина: проверка не удалась: 2 ошибки проверки обнаружены в политике "B2C_1A_TRUSTFRAMEWORKEXTENSIONS" арендатора "mytenant.onmicrosoft.com". mytenant.onmicrosoft.com ", но он не был найден. Ссылка на ClaimsExchange с идентификатором"SignInWithLogonNameExchange"указана в UserJourney с идентификатором"SignInAny"в политике"B2C_1A_TrustFrameworkExtensions"арендатора"MBHB2C.onmicrosoft.com", но не найдена.

Первая часть 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> 

Я не понимаю, что на самом деле не было найдено.

Предложения?

Спасибо!

Мартин

1 ответ

Решение

В основном в OrchestrationStep с Order 1, у вас есть следующая строка:

<ClaimsProviderSelection TargetClaimsExchangeId="SignInWithLogonNameExchange" /> 

TargetClaimsExchangeId это ссылка на ClaimsExchange элемент в следующем OrchestrationStep, Однако в следующем шаге у вас нет строки, аналогичной этой Id установлен в SignInWithLogonNameExchange,

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

Поэтому IEF не знает, что делать (например, какой технический профиль использовать), когда пользователь нажимает кнопку, соответствующую этому ClaimsProviderSelection,

Другие вопросы по тегам