Ограничение возраста регистрации в Azure B2C с помощью настраиваемых политик

Я пытаюсь настроить клиент B2C, используя политики вместо пользовательских потоков. Для этого я использую Шаблон SocialAndLocalAccount в качестве стартовой базы.

На странице регистрации я добавил настраиваемую заявку, чтобы спросить пользователя о дате его рождения. Если пользователь указывает дату, которая делает его / ее несовершеннолетним (+18), я хотел бы отобразить сообщение об ошибке проверки (например, то, которое вы можете установить с помощью предикатов) и запретить пользователю регистрироваться с помощью кнопка создания отключена.

Пока вот что у меня есть:

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

<ClaimType Id="systemDateTime">
    <DisplayName>Today's date</DisplayName>
    <DataType>dateTime</DataType>
  </ClaimType>

  <ClaimType Id="isNotUnderAge">
    <DisplayName>Indicates whether user being under age or not</DisplayName>
    <DataType>boolean</DataType>
    <AdminHelpText>User must be over 18</AdminHelpText>
  </ClaimType>

Я добавил в ClaimsTransformation, чтобы получить текущую дату и сравнить ее с выбранной (сравнение дат):

<!-- Check user under age -->
  <ClaimsTransformation Id="GetSystemDateTime" TransformationMethod="GetCurrentDateTime">
    <OutputClaims>
      <OutputClaim ClaimTypeReferenceId="systemDateTime" TransformationClaimType="currentDateTime" />
    </OutputClaims>
  </ClaimsTransformation>

  <ClaimsTransformation Id="CheckBirthDateIsNotUnderAge" TransformationMethod="DateTimeComparison">
    <InputClaims>
      <InputClaim ClaimTypeReferenceId="birthDate" TransformationClaimType="firstDateTime" />
      <InputClaim ClaimTypeReferenceId="systemDateTime" TransformationClaimType="secondDateTime" />
    </InputClaims>
    <InputParameters>
      <InputParameter Id="operator" DataType="string" Value="later than" />
      <InputParameter Id="timeSpanInSeconds" DataType="int" Value="568025136" />
    </InputParameters>
    <OutputClaims>
      <OutputClaim ClaimTypeReferenceId="isNotUnderAge" TransformationClaimType="result" />
    </OutputClaims>
  </ClaimsTransformation>

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

Вы когда-нибудь сталкивались с подобным ограничением? Если да, то как лучше всего этого добиться и где я могу найти советы, которые помогут мне решить мою проблему?

Большое спасибо!

РЕДАКТИРОВАТЬ 1:

Я нашел этот вопрос, который объясняет аналогичную проблему, если не то же самое, и заставляет меня задаться вопросом: можно ли добиться этого с помощью ClaimsTransformations и Predicates или REST API - единственный способ получить ожидаемый результат?


person AlmondCluster    schedule 05.05.2020    source источник
comment
Вы смотрели на возрастные ограничения? - docs.microsoft.com/en-us / azure / active-directory-b2c /   -  person rbrayb    schedule 05.05.2020


Ответы (1)


Похоже, у вас есть правильная идея, если вы хотите полностью заблокировать всех пользователей младше 18 лет. Один из вариантов - вы можете использовать технический профиль проверки для вызова преобразования AssertBooleanClaimIsEqualToValue, которое отобразит настраиваемое сообщение об ошибке на странице входа, если пользователю меньше 18 лет, и он не позволит ему продолжить. См. документацию Microsoft: преобразования логических утверждений например.

Если вы действительно хотите, чтобы кнопка «Продолжить» была серой, вы можете отобразить isNotUnderage как утверждение, доступное только для чтения, и скрыть его с помощью CSS, а затем использовать JS, чтобы выделить кнопку серым цветом в зависимости от ее значения.

Третий вариант - добавить OrchestrationStep перед тем, как представить пользователю свои параметры регистрации с предварительным условием пропустить, если пользователю больше 18 лет, который отобразит новый самоутверждаемый технический профиль, который вы можете настроить для отображения сообщения об ошибке (только абзац, требующий подтверждения). ) и удалите кнопку продолжения из. Обратной стороной является то, что вам необходимо собрать возраст пользователя, прежде чем предлагать ему варианты регистрации, что может усложнить ситуацию.

person Nate    schedule 05.05.2020