Принятие имени пользователя или электронной почты во время входа

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

Следующий фрагмент кода — это шаг моего пути пользователя, который ссылается на базовый технический профиль. Упомянутый ContentDefinition использует модель данных unifiedssp:1.1.0.

<OrchestrationStep Order="1" Type="CombinedSignInAndSignUp" ContentDefinitionReferenceId="api.signuporsignin">
      <ClaimsProviderSelections>
        <ClaimsProviderSelection ValidationClaimsExchangeId="LocalAccountSigninEmailExchange" />
      </ClaimsProviderSelections>
      <ClaimsExchanges>
        <ClaimsExchange Id="LocalAccountSigninEmailExchange" TechnicalProfileReferenceId="SA-LocalAccount-SignIn" />
      </ClaimsExchanges>
    </OrchestrationStep>

И упомянутый технический профиль, который выполняет проверку идентификатора входа и пароля:

  <TechnicalProfile Id="SA-LocalAccount-SignIn">
            <DisplayName>Local Account Sign In</DisplayName>
            <Protocol Name="Proprietary" 
  Handler="Web.TPEngine.Providers.SelfAssertedAttributeProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
          <Metadata>
            <Item Key="SignUpTarget">LocalAccountSignUp</Item>
            <Item Key="setting.operatingMode">Username</Item>
            <Item Key="ContentDefinitionReferenceId">api.localaccountsignin</Item>
          </Metadata>
          <OutputClaims>
            <OutputClaim ClaimTypeReferenceId="signInName" Required="true" />
            <OutputClaim ClaimTypeReferenceId="password" Required="true" />
            <OutputClaim ClaimTypeReferenceId="objectId" Required="true" />
          </OutputClaims>
          <ValidationTechnicalProfiles>
            <ValidationTechnicalProfile ReferenceId="LoginToAzureAD-OIDC" />
          </ValidationTechnicalProfiles>
          <UseTechnicalProfileForSessionManagement ReferenceId="SM-AAD" />
        </TechnicalProfile>

Я знаю, что setting.operatingMode определяет, является ли требуемый идентификатор входа Username или Email. Есть ли третий вариант, чтобы разрешить оба?

Указание одного из них обеспечивает регулярное выражение в поле идентификатора входа и предотвращает использование другого, т. е. адреса электронной почты не принимаются в качестве входных данных, если для setting.operatingMode установлено значение Username.


person nyoung    schedule 08.01.2018    source источник
comment
Можете ли вы включить снимок экрана с ошибкой ввода? Я этого не испытываю.   -  person Chris Padgett    schedule 09.01.2018


Ответы (1)


Проблема была вызвана шаблонами регулярных выражений, включенными в мой адрес электронной почты и имя пользователя ClaimType в файле ClaimsSchema. Удаление регулярного выражения, прикрепленного к заявке на имя пользователя, привело к тому, что адреса электронной почты были приняты в качестве допустимых входных данных, и теперь я могу войти в систему, используя либо имя пользователя, либо адрес электронной почты.

person nyoung    schedule 12.01.2018