Azure ad b2c 如果以前的配置文件抛出错误,验证配置文件仍将执行

Azure ad b2c 如果以前的配置文件抛出错误,验证配置文件仍将执行,azure-ad-b2c,Azure Ad B2c,我有一个自定义的注册策略,它有3个验证配置文件 <ValidationTechnicalProfile ReferenceId="UsernameCheck" ContinueOnError = "false"/> <ValidationTechnicalProfile ReferenceId="API-VerifyStep1" ContinueOnError = "false"/> <ValidationTechnicalProfile ReferenceId=

我有一个自定义的注册策略,它有3个验证配置文件

<ValidationTechnicalProfile ReferenceId="UsernameCheck" ContinueOnError = "false"/>
<ValidationTechnicalProfile ReferenceId="API-VerifyStep1"  ContinueOnError = "false"/>
<ValidationTechnicalProfile ReferenceId="AAD-UserWriteUsingLogonName" ContinueOnError="false" />

<TechnicalProfile Id="UsernameCheck">
  <Metadata>
    <Item Key="Operation">Read</Item>
    <Item Key="RaiseErrorIfClaimsPrincipalDoesNotExist">false</Item>
  </Metadata>
  <IncludeInSso>false</IncludeInSso>
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="signInName" PartnerClaimType="signInNames.emailAddress" Required="true" />
  </InputClaims>
  <OutputClaims>
    <!-- Required claims -->
    <OutputClaim ClaimTypeReferenceId="objectId" DefaultValue="NOTFOUND" />
    <OutputClaim ClaimTypeReferenceId="objectIdNotFound" DefaultValue="NOTFOUND" AlwaysUseDefaultValue="true" />
  </OutputClaims>
  <OutputClaimsTransformations>
    <OutputClaimsTransformation ReferenceId="AssertObjectIdObjectIdNotFoundAreEqual" />
  </OutputClaimsTransformations>
  <IncludeTechnicalProfile ReferenceId="AAD-Common" />
</TechnicalProfile>


<TechnicalProfile Id="API-VerifyStep1">
<DisplayName>Validate user's input data and return if valid to sign-up</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="SendClaimsIn">Body</Item>
        <!-- Set AuthenticationType to Basic or ClientCertificate in production environments -->
        <Item Key="AuthenticationType">None</Item>
        <!-- REMOVE the following line in production environments -->
        <Item Key="AllowInsecureAuthInProduction">true</Item>
      </Metadata>
<InputClaims>
    <InputClaim ClaimTypeReferenceId="extension_accessNumber"  />
    <InputClaim ClaimTypeReferenceId="email" />
    <InputClaim ClaimTypeReferenceId="signInName" />

</InputClaims>

<OutputClaims>
    <OutputClaim ClaimTypeReferenceId="extension_error" PartnerClaimType="extension_error" DefaultValue="true" />
    <OutputClaim ClaimTypeReferenceId="extension_message"  PartnerClaimType="extension_message" DefaultValue="Error"/>
    <OutputClaim ClaimTypeReferenceId="objectId" />
    <OutputClaim ClaimTypeReferenceId="newUser" PartnerClaimType="newClaimsPrincipalCreated" />
    <OutputClaim ClaimTypeReferenceId="authenticationSource" DefaultValue="localAccountAuthentication" />
    <OutputClaim ClaimTypeReferenceId="userPrincipalName" /> 

</OutputClaims>
<OutputClaimsTransformations>
   <OutputClaimsTransformation ReferenceId="AssertErrorMessageFalseStep1" />
</OutputClaimsTransformations>
<UseTechnicalProfileForSessionManagement ReferenceId="SM-Noop" />

阅读
假的
假的
验证用户的输入数据并返回(如果有效)以注册
https://...
身体
没有一个
真的

问题是所有验证配置文件都是在抛出错误的情况下执行的。如果前两个中的任何一个抛出错误,我将在注册页面上收到一条消息。但是,用户仍然会被添加到Azure广告中。为什么会这样做?错误的意义是什么?如何确保只在其他两个验证完成后才进行写入


提前感谢您

ContinueOnError默认为false,因此只要您想要默认行为,就不需要指定它

由于您使用的是restful提供程序,我怀疑您遇到了以下线程中提到的问题-

基本上,验证技术概要文件需要返回409。


您还可以使用上一页提到的先决条件来避免执行技术概要文件

谢谢你的回应!我遵循了一个教程,其中有一个RESTAPI返回一个声明,声明中有一个错误。在抛出409个错误之前,我将尝试使用前置条件。再次感谢!