Пользовательская политика Azure B2C. Могут ли быть предварительные условия для пользовательских расширений

У нас есть процесс регистрации, который вызывает API-интерфейс, который добавляет претензию, если адрес электронной почты, указанный при входе в систему, такой же, как в записи, и ноль в противном случае.

Мы хотели бы использовать эту претензию в качестве предварительного условия для проверки номера мобильного телефона. Идея состоит в том, что если претензия не существует, мы должны обработать профиль PhoneFactor_Verify.

Наш шаг оркестровки выглядит следующим образом:

    <OrchestrationStep Order="5" Type="ClaimsExchange">
      <Preconditions>
        <Precondition Type="ClaimsExist" ExecuteActionsIf="true">
          <Value>extension_IsVerified</Value>
          <Action>SkipThisOrchestrationStep</Action>
        </Precondition>
      </Preconditions>
      <ClaimsExchanges>
        <ClaimsExchange Id="PhoneFactor" TechnicalProfileReferenceId="PhoneFactor-Verify" />
      </ClaimsExchanges>
    </OrchestrationStep>

Это предварительное условие игнорируется, и шаг PhoneFactor никогда не выполняется.

Используя пример B2CGraphClient из GitHub Azure B2C QuickStarts, я вижу, что у объекта User иногда есть утверждение, а иногда нет, но этот шаг никогда не вызывается.

Нужно ли писать пользователю, прежде чем это сможет работать?

ОБНОВЛЕНО:

Вот технический профиль для вызова REST Api

<TechnicalProfiles>
  <TechnicalProfile Id="AzureFunctions-Validate">
    <DisplayName>Validate Member Claims Web Hook Azure Function</DisplayName>
    <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.RestfulProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
    <Metadata>
      <Item Key="ServiceUrl">https://.....</Item>            
      <Item Key="AuthenticationType">None</Item>
      <Item Key="SendClaimsIn">Body</Item>
    </Metadata>
    <InputClaims>
      <InputClaim ClaimTypeReferenceId="email" />
      <InputClaim ClaimTypeReferenceId="surname" />
      <InputClaim ClaimTypeReferenceId="extension_MemberNumber" />
    </InputClaims>
    <OutputClaims>
      <OutputClaim ClaimTypeReferenceId="extension_MemberStatus" />
      <OutputClaim ClaimTypeReferenceId="extension_MemberEmail" />
      <OutputClaim ClaimTypeReferenceId="extension_MemberMobile" />
      <OutputClaim ClaimTypeReferenceId="extension_IsVerified" />
    </OutputClaims>
    <UseTechnicalProfileForSessionManagement ReferenceId="SM-Noop" />
</TechnicalProfile>

Это называется профилем проверки следующего:

<TechnicalProfile Id="SelfAsserted-Social">
    <ValidationTechnicalProfiles>
        <ValidationTechnicalProfile ReferenceId="AzureFunctions-Validate" />
    </ValidationTechnicalProfiles>
</TechnicalProfile>

<TechnicalProfile Id="LocalAccountSignUpWithLogonEmail">
    <ValidationTechnicalProfiles>
        <ValidationTechnicalProfile ReferenceId="AzureFunctions-Validate" />
    </ValidationTechnicalProfiles>
</TechnicalProfile>

0 ответов

Другие вопросы по тегам