3

我要求允许用户使用他们在注册期间创建的电子邮件或用户名登录。

以下代码片段是我的用户旅程步骤,它引用了基础技术配置文件。引用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定义所需的登录标识符是否为UsernameEmail。是否有第三种选择允许两者?

指定一个会在登录标识符字段上强制执行正则表达式,并防止使用另一个,即如果setting.operatingMode设置为,则不接受电子邮件地址作为输入Username

4

1 回答 1

3

该问题是由我的电子邮件地址ClaimTypeClaimsSchema. 删除附加到用户名声明的正则表达式导致电子邮件地址被接受为有效输入,我现在可以使用用户名或电子邮件地址登录。

于 2018-01-12T12:31:01.023 回答