Используя пользовательские политики B2C, я хочу разрешить пользователям регистрироваться и входить в систему с помощью Google, но ограничиваюсь известным набором доменных имен электронной почты, в противном случае возникает ошибка.
Я основал этот стартовый пакет .
Вот что я пробовал:
- Добавление
<Restrictions>
и регулярное выражение дляпретензия по электронной почте. Похоже, что они применимы только для заявлений, заявленных самим собой. - Добавление
ValidationTechnicalProfile
в технический профиль Google ClaimsProvider
. Опять же, похоже, что они применимы только к самоутвержденным техническим профилям. - Добавление того же к техническому профилю
SelfAsserted-Social
, который запускается после Google. Это наиболее перспективно. Я могу получить ошибку проверки, но , только если я никогда не пропущу этот шаг . Это приводит к прерыванию входа в систему, поскольку пользователь уже существует.
Мои преобразования утверждений проверки выглядят следующим образом. (Я пока ограничиваюсь только одним доменом.)
<ClaimsTransformation Id="ExtractDomain" TransformationMethod="ParseDomain">
<InputClaims>
<InputClaim ClaimTypeReferenceId="email" TransformationClaimType="emailAddress" />
</InputClaims>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="domain" TransformationClaimType="domain" />
</OutputClaims>
</ClaimsTransformation>
<ClaimsTransformation Id="AssertDomainEqual" TransformationMethod="AssertStringClaimsAreEqual">
<InputClaims>
<InputClaim ClaimTypeReferenceId="domain" TransformationClaimType="inputClaim1" />
<InputClaim ClaimTypeReferenceId="acceptableDomain" TransformationClaimType="inputClaim2" />
</InputClaims>
<InputParameters>
<InputParameter Id="stringComparison" DataType="string" Value="ordinalIgnoreCase" />
</InputParameters>
</ClaimsTransformation>
и мои TechnicalProfile
:
<TechnicalProfile Id="Validate-Email">
<DisplayName>Validate email address</DisplayName>
<Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.ClaimsTransformationProtocolProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
<InputClaims>
<InputClaim ClaimTypeReferenceId="acceptableDomain" DefaultValue="myacceptabledomain.com" />
<InputClaim ClaimTypeReferenceId="domain" />
</InputClaims>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="email" />
</OutputClaims>
<OutputClaimsTransformations>
<OutputClaimsTransformation ReferenceId="AssertDomainEqual" />
</OutputClaimsTransformations>
<UseTechnicalProfileForSessionManagement ReferenceId="SM-Noop" />
</TechnicalProfile>
Правильно ли я поступаю?
Возможно ли молча проверить утверждения (без шага самоутверждения)?
Есть ли примеры этого? Единственное, что я могу найти, это для проверки адресов электронной почты локальных учетных записей.