Используйте социальную регистрацию (OAuth2), но ограничьте адрес электронной почты с помощью пользовательских политик - PullRequest
0 голосов
/ 14 октября 2019

Используя пользовательские политики 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>

Правильно ли я поступаю?

Возможно ли молча проверить утверждения (без шага самоутверждения)?

Есть ли примеры этого? Единственное, что я могу найти, это для проверки адресов электронной почты локальных учетных записей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...