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