У меня есть требование разрешить пользователям входить в систему с помощью электронной почты или имени пользователя, которое они создали во время регистрации.
Следующий фрагмент кода — это шаг моего пути пользователя, который ссылается на базовый технический профиль. Упомянутый 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
.