Экран входа снова отображается при доступе к политике редактирования профиля после входа пользователя в приложение Azure AD B2C

Я прошу это от имени одного мобильного / веб-разработчика, я создал несколько настраиваемых политик в AD B2C. Теперь разработчик пытается интегрировать это с приложением. По какой-то причине я использовал:

<DataUri>urn:com:microsoft:aad:b2c:elements:contract:selfasserted:1.2.0
</DataUri>

как URI данных для входа в технический профиль. И определение содержания:

<ContentDefinition Id="api.localaccount.login">
                <LoadUri>my custom html</LoadUri>
                <RecoveryUri>~/common/default_page_error.html</RecoveryUri>
                <DataUri>urn:com:microsoft:aad:b2c:elements:contract:selfasserted:1.2.0</DataUri>
                <Metadata>
                    <Item Key="DisplayName">Local Account Login</Item>
                </Metadata>

                <LocalizedResourcesReferences MergeBehavior="Prepend">
                    <LocalizedResourcesReference Language="en" LocalizedResourcesReferenceId="signin_en" />
                    <LocalizedResourcesReference Language="es" LocalizedResourcesReferenceId="signin_es" />
                </LocalizedResourcesReferences>
            </ContentDefinition>

Логин TP:

<TechnicalProfile Id="SelfAsserted-LocalAccountSignin-CustomUserName-WithoutSignup">
                    <DisplayName>Local Account Signin UserName</DisplayName>
                    <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.SelfAssertedAttributeProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
                    <Metadata>
                        <Item Key="setting.operatingMode">Username</Item>
                        <Item Key="setting.retryLimit">11</Item>
                        <Item Key="ContentDefinitionReferenceId">api.localaccount.login</Item>
                        <Item Key="UserMessageIfUserAccountDisabled">You account locked.</Item>      
                        <Item Key="UserMessageIfUserAccountLocked">You've made too many incorrect attempts. Please try again later.</Item>
                        <Item Key="setting.showCancelButton">false</Item>
                        <Item Key="language.button_continue">LOG IN</Item>
                        <Item Key="ServiceThrottled">There are too many requests at this moment. Please wait for some time and try again.</Item>
                    </Metadata>
                    <IncludeInSso>false</IncludeInSso>
                    <InputClaims>
                        <InputClaim ClaimTypeReferenceId="signInName" />
                    </InputClaims>
                    <OutputClaims>
                        <OutputClaim ClaimTypeReferenceId="signInName" Required="true" />
                        <OutputClaim ClaimTypeReferenceId="password" Required="true" />
                        <OutputClaim ClaimTypeReferenceId="objectId" />
                        <OutputClaim ClaimTypeReferenceId="authenticationSource" />
                        <OutputClaim ClaimTypeReferenceId="executed-SelfAsserted-Input" DefaultValue="false" />                        
</OutputClaims>
<ValidationTechnicalProfiles>
  <ValidationTechnicalProfile ReferenceId="CheckUserExist" />
  <ValidationTechnicalProfile ReferenceId="SendOTP" />
  <ValidationTechnicalProfile ReferenceId="login-NonInteractive" />
</ValidationTechnicalProfiles>
</TechnicalProfile>

И мой путь к пользователю выглядит следующим образом:

   <UserJourneys>     
        <UserJourney Id="OnBoarding">
            <OrchestrationSteps>        
                <OrchestrationStep Order="1" Type="ClaimsProviderSelection" ContentDefinitionReferenceId="api.idpselections">
                    <ClaimsProviderSelections>
                        <ClaimsProviderSelection TargetClaimsExchangeId="LocalAccountSigninEmailExchange" />
                    </ClaimsProviderSelections>
                </OrchestrationStep>

                <OrchestrationStep Order="2" Type="ClaimsExchange">
                    <ClaimsExchanges>
                        <ClaimsExchange Id="LocalAccountSigninEmailExchange" TechnicalProfileReferenceId="SelfAsserted-LocalAccountSignin-CustomUserName-WithoutSignup" />
                    </ClaimsExchanges>
                </OrchestrationStep>

                <OrchestrationStep Order="3" Type="ClaimsExchange">
                    <ClaimsExchanges>
                        <ClaimsExchange Id="AADUserReadWithObjectId" TechnicalProfileReferenceId="AAD-UserReadUsingObjectId" />
                    </ClaimsExchanges>
                </OrchestrationStep>

                <OrchestrationStep Order="4" Type="ClaimsExchange">
                    <ClaimsExchanges>
                        <ClaimsExchange Id="B2CUserProfileUpdateExchange" TechnicalProfileReferenceId="SelfAsserted-AccountValueUpdate" />
                    </ClaimsExchanges>
                </OrchestrationStep>

                <OrchestrationStep Order="5" Type="ClaimsExchange">
                    <ClaimsExchanges>
                        <ClaimsExchange Id="AADUserReadUserWithObjectId" TechnicalProfileReferenceId="AAD-UserReadUsingObjectId" />
                    </ClaimsExchanges>
                </OrchestrationStep>

                <OrchestrationStep Order="6" Type="SendClaims" CpimIssuerTechnicalProfileReferenceId="JwtIssuer" />
            </OrchestrationSteps>
            <ClientDefinition ReferenceId="DefaultWeb" />
        </UserJourney>    
    </UserJourneys>

Политика работает нормально, и когда он пытается интегрировать ее с приложением отвечающей стороны, после вызова обновления профиля регистрации пользователя (см. Выше путь пользователя), но он снова показывает экран входа в систему. Как можно обойти логин после регистрации? Это то, что нам нужно с политикой?

Редактировать:

Я использую отдельные политики для входа и регистрации. После входа в систему путешествие работает должным образом, но после регистрации появляется экран входа в систему.


person Alex    schedule 24.01.2020    source источник
comment
Я отредактировал вопрос, отредактированный контент находится под текстом Edit:   -  person Alex    schedule 25.01.2020


Ответы (1)


Посмотрите еще раз на стартовый пакет: вы удалили ссылку на технический профиль управления сеансом (SM-AAD) со своей страницы входа. Таким образом, во время редактирования профиля он не будет пропущен для вошедшего в систему пользователя.

https://github.com/Azure-Samples/active-directory-b2c-custom-policy-starterpack/blob/master/LocalAccounts/TrustFrameworkBase.xml#L687

person Jas Suri - MSFT    schedule 25.01.2020
comment
Спасибо, разобрался. Я добавил TP управления сеансом в свой TP регистрации (операция записи). Но я в этом сомневаюсь. У меня два TP (подписка), один - написать электронное письмо в качестве имени пользователя, а другой - телефон в качестве имени пользователя, поскольку у обоих уже есть TP управления сеансом, и я звоню им с другого TP в качестве TP для проверки, но это не так. управление сеансом TP. Вот почему логин снова появился при редактировании профиля. Теперь я добавил управление сеансом к этому TP, и редактирование профиля работало нормально. Почему, обе операции записи имеют сеанс - person Alex; 27.01.2020