Как получить ссылку на забытый пароль в пользовательской политике входа для локальных учетных записей?
Используя среду идентификации AAD B2C, я пытаюсь создать настраиваемую политику, которая разрешает вход в локальную учетную запись AADB2C и включает "Не удается получить доступ к вашей учетной записи?" ссылка, ссылающаяся на встроенную функциональность самообслуживания. В общем, я хочу, чтобы пользовательский опыт / функциональность встроенной политики "B2C_1_SignIn_Local", но как часть моего набора пользовательских политик. Я НЕ хочу, чтобы эта пользовательская поездка / опыт позволяла пользователю выбирать другой IdP.
Мне удалось создать пользовательскую поездку, которая вызывает локальный вход, но пользовательский интерфейс не включает "Не удается получить доступ к вашей учетной записи?" ссылка на сайт. Пользовательский журнал, который у меня пока есть, выглядит так:
<UserJourney Id="SignInB2CLocal">
<OrchestrationSteps>
<OrchestrationStep Order="1" Type="ClaimsProviderSelection" ContentDefinitionReferenceId="api.idpselections">
<ClaimsProviderSelections>
<ClaimsProviderSelection TargetClaimsExchangeId="SignInWithLogonNameExchange" />
</ClaimsProviderSelections>
</OrchestrationStep>
<OrchestrationStep Order="2" Type="ClaimsExchange">
<ClaimsExchanges>
<ClaimsExchange Id="SignInWithLogonNameExchange" TechnicalProfileReferenceId="SelfAsserted-LocalAccountSignin-Email" />
</ClaimsExchanges>
</OrchestrationStep>
<OrchestrationStep Order="3" 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>
<OrchestrationStep Order="4" Type="SendClaims" CpimIssuerTechnicalProfileReferenceId="JwtIssuer" />
</OrchestrationSteps>
</UserJourney>
Вышеуказанное основано на сочетании того, что я нашел во встроенной политике B2C_1_SignIn_Local (загруженный файл), и того, что я использовал для других IdP, таких как AAD. Я также попытался напрямую вызвать встроенный B2C_1_SignIn_Local из моего приложения MVC ASP.NET, но получил ошибки проверки токена.
Возможен ли мой предполагаемый результат?
Спасибо!
Мартин
2 ответа
Вы также можете:
(Я) Изменение от ClaimsProviderSelection
а также ClaimsExchange
шаги оркестровки к CombinedSignInAndSignUp
один с api.signuporsignin
определение содержания или
(ii) Изменение от api.selfasserted
определение содержания до api.signuporsignin
один для SelfAsserted-LocalAccountSignin-Email
технический профиль.
Что важно, так это <DataUri />
значение для определения содержимого установлено на:
urn:com:microsoft:aad:b2c:elements:unifiedssp:1.0.0
который отображает ссылки "Забыли пароль" и "Зарегистрироваться сейчас".
я) CombinedSignInAndSignUp
шаг оркестровки
<OrchestrationSteps>
<OrchestrationStep Order="1" Type="CombinedSignInAndSignUp" ContentDefinitionReferenceId="api.signupsignin">
<ClaimsProviderSelections>
<ClaimsProviderSelection ValidationClaimsExchangeId="LocalAccountSigninEmailExchange" />
</ClaimsProviderSelections>
<ClaimsExchanges>
<ClaimsExchange Id="LocalAccountSigninEmailExchange" TechnicalProfileReferenceId="SelfAsserted-LocalAccountSignin-Email" />
</ClaimsExchanges>
</OrchestrationStep>
<OrchestrationStep Order="2" Type="ClaimsExchange">
<Preconditions>
<Precondition Type="ClaimsExist" ExecuteActionsIf="true">
<Value>objectId</Value>
<Action>SkipThisOrchestrationStep</Action>
</Precondition>
</Preconditions>
<ClaimsExchanges>
<ClaimsExchange Id="SignUpWithLogonEmailExchange" TechnicalProfileReferenceId="LocalAccountSignUpWithLogonEmail" />
</ClaimsExchanges>
</OrchestrationStep>
<OrchestrationStep Order="3" Type="ClaimsExchange">
<ClaimsExchanges>
<ClaimsExchange Id="AADUserReadWithObjectId" TechnicalProfileReferenceId="AAD-UserReadUsingObjectId" />
</ClaimsExchanges>
</OrchestrationStep>
<OrchestrationStep Order="4" Type="SendClaims" CpimIssuerTechnicalProfileReferenceId="JwtIssuer" />
</OrchestrationSteps>
II) LocalAccountSigninEmailExchange
технический профиль
<TechnicalProfiles>
<TechnicalProfile Id="SelfAsserted-LocalAccountSignin-Email">
<Metadata>
<Item Key="ContentDefinitionReferenceId">api.signuporsignin</Item>
</Metadata>
</TechnicalProfile>
</TechnicalProfiles>
<OrchestrationSteps>
<OrchestrationStep Order="1" Type="ClaimsExchange">
<ClaimsExchanges>
<ClaimsExchange Id="LocalAccountSigninEmailExchange" TechnicalProfileReferenceId="SelfAsserted-LocalAccountSignin-Email" />
</ClaimsExchanges>
</OrchestrationStep>
<OrchestrationStep Order="2" Type="ClaimsExchange">
<Preconditions>
<Precondition Type="ClaimsExist" ExecuteActionsIf="true">
<Value>objectId</Value>
<Action>SkipThisOrchestrationStep</Action>
</Precondition>
</Preconditions>
<ClaimsExchanges>
<ClaimsExchange Id="SignUpWithLogonEmailExchange" TechnicalProfileReferenceId="LocalAccountSignUpWithLogonEmail" />
</ClaimsExchanges>
</OrchestrationStep>
<OrchestrationStep Order="3" Type="ClaimsExchange">
<ClaimsExchanges>
<ClaimsExchange Id="AADUserReadWithObjectId" TechnicalProfileReferenceId="AAD-UserReadUsingObjectId" />
</ClaimsExchanges>
</OrchestrationStep>
<OrchestrationStep Order="4" Type="SendClaims" CpimIssuerTechnicalProfileReferenceId="JwtIssuer" />
</OrchestrationSteps>
Это не проверено, но я уверен, что вы измените:
ContentDefinitionReferenceId="api.idpselections"
Для того, чтобы:
ContentDefinition Id="api.localaccountsignin"
Это должно просто показать локальную учетную запись на странице без регистрации и сброса пароля.