Azure B2C: проверка наличия другого утверждения во время создания локальной учетной записи

В дополнение к обычному созданию учетной записи на основе того, не существует ли используемая электронная почта в настоящее время, я хотел бы знать, как я могу также проверить, не существует ли другое значение утверждения в Azure Active Directory.

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

Перед созданием учетной записи я хочу проверить, не связано ли имя организации с какой-либо другой учетной записью (мы собираемся выполнить регистрацию по приглашению, если владелец хочет добавить людей в свою организацию). Если его не существует, создайте учетную запись. В противном случае я хочу выдать ошибку и предотвратить создание учетной записи.

Изучив документацию по техническим профилям Azure B2C, я подумал, что лучшим вариантом будет изменение AAD-UserWriteUsingLogonEmail.

Пока я пробовал два подхода. Первый подход заключался в включении входного утверждения для названия организации. Однако это просто замораживает поток теста:

<TechnicalProfile Id="AAD-UserWriteUsingLogonEmail">
    <Metadata>
      <Item Key="Operation">Write</Item>
      <Item Key="RaiseErrorIfClaimsPrincipalAlreadyExists">true</Item>
    </Metadata>
    <IncludeInSso>false</IncludeInSso>
    <InputClaims>
      <InputClaim ClaimTypeReferenceId="email" PartnerClaimType="signInNames.emailAddress" Required="true" /> 
      <InputClaim ClaimTypeReferenceId="extension_organizationName" Required="true" /> 
    </InputClaims>
    <PersistedClaims>
      <!-- Required claims -->
      <PersistedClaim ClaimTypeReferenceId="email" PartnerClaimType="signInNames.emailAddress" />
      <PersistedClaim ClaimTypeReferenceId="newPassword" PartnerClaimType="password"/>
      <PersistedClaim ClaimTypeReferenceId="displayName" DefaultValue="unknown" />
      <PersistedClaim ClaimTypeReferenceId="passwordPolicies" DefaultValue="DisablePasswordExpiration" />

      <!-- Optional claims. -->
      <PersistedClaim ClaimTypeReferenceId="givenName" />
      <PersistedClaim ClaimTypeReferenceId="surname" />
      <PersistedClaim ClaimTypeReferenceId="extension_organizationName" /> 
    </PersistedClaims>
    <OutputClaims>
      <OutputClaim ClaimTypeReferenceId="objectId" />
      <OutputClaim ClaimTypeReferenceId="newUser" PartnerClaimType="newClaimsPrincipalCreated" />
      <OutputClaim ClaimTypeReferenceId="authenticationSource" DefaultValue="localAccountAuthentication" />
      <OutputClaim ClaimTypeReferenceId="userPrincipalName" />
      <OutputClaim ClaimTypeReferenceId="signInNames.emailAddress" />
      </OutputClaims>
    <IncludeTechnicalProfile ReferenceId="AAD-Common" />
    <UseTechnicalProfileForSessionManagement ReferenceId="SM-AAD" />
</TechnicalProfile>

Второй подход был чем-то похожим, но вместо этого использовался <InputClaimsTransformations>, чтобы проверить, существует ли название организации, с помощью действия DoesClaimExist. При использовании этого подхода я получаю следующую ошибку:

Невозможно проверить предоставленную информацию.

Поскольку я новичок в создании пользовательских политик, правильно ли меняю профиль AAD-UserWriteUsingLogonEmail или мне нужен совершенно другой подход?

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

После перехода по ссылкам Барбары я смог заставить валидацию работать. Однако у меня все еще возникают проблемы с попыткой предотвратить учетную запись, использующую организацию, которая уже связана с другой учетной записью. Кажется, что использование <InputClaimsTransformations> ничего не дает.


person Joseph Woolf    schedule 23.02.2021    source источник


Ответы (1)


Сообщение об ошибке Unable to validate the information provided. указывает на то, что вы неправильно настроили настраиваемую политику для использования настраиваемых утверждений. Таким образом, вы должны следовать документации:

  1. Получить свойства приложения для приложения расширений
  2. Измените свою политику, чтобы включить свойства приложения в общий технический профиль AAD

Пожалуйста, следуйте инструкциям и попробуйте еще раз.

person Barbara    schedule 23.02.2021
comment
Я хочу поблагодарить вас за помощь в исправлении ошибки проверки. Однако является ли подход, который я пытаюсь использовать, приемлемым для того, что я хочу делать? - person Joseph Woolf; 23.02.2021
comment
Спасибо, @Joseph, и дайте нам знать, если вам нужна дополнительная информация. - person Jit_MSFT; 01.03.2021