Как получить ссылку на забытый пароль в пользовательской политике входа для локальных учетных записей?

Используя среду идентификации 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"

Это должно просто показать локальную учетную запись на странице без регистрации и сброса пароля.

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