基于this question ... REST API端点正在验证外部IDP电子邮件,并且在电子邮件无效的情况下更正返回错误。

return Content(HttpStatusCode.Conflict, new CustomResponseContent
{
    Version = "1.0.0",
    Status = (int)HttpStatusCode.Conflict,
    UserMessage = message
});

现在,我想检测到此错误,并在随后的OrchestrationStep中使用它,如下所示:

<OrchestrationStep Order="3"
  Type="ClaimsExchange">
  <ClaimsExchanges>
    <ClaimsExchange Id="REST-ValidateSignInEmail"
      TechnicalProfileReferenceId="REST-ValidateSignInEmail" />
  </ClaimsExchanges>
</OrchestrationStep>

<!-- Taken from here: https://medium.com/the-new-control-plane/creating-an-error-page-for-an-azure-ad-b2c-custom-policy-flow-fb2692a3b50f -->
<OrchestrationStep Order="4"
  Type="ClaimsExchange">
  <Preconditions>
    <Precondition Type="ClaimEquals"
      ExecuteActionsIf="true">
      <Value>extension_Flag</Value>
      <Value>False</Value>
      <Action>SkipThisOrchestrationStep</Action>
    </Precondition>
  </Preconditions>
  <ClaimsExchanges>
    <ClaimsExchange Id="SelfAssertedRegError"
      TechnicalProfileReferenceId="SelfAsserted-RegError" />
  </ClaimsExchanges>
</OrchestrationStep>

如果步骤 3 返回冲突,我想使用按照here所述实现的自定义错误页面在步骤 4 中显示错误消息。

我看到 4 步骤基于extension_Flag执行。

有什么办法可以从REST-ValidateSignInEmail检索和存储结果,并将其用于步骤的标记4

注意:执行完用户旅程后,我在URL中看到以下AADB2C错误。它来自REST API端点错误(409-冲突)...



我想将error_description消息传递给步骤 4

最佳答案

我以不同的方式进行了此操作...而不是返回Conflict [409]状态,而是将REST端点更改为返回OutputClaim,如下所示:

<OutputClaims>
    <OutputClaim ClaimTypeReferenceId="extension_isEnabled"
        PartnerClaimType="IsEnabled" DefaultValue="false"/>
    <OutputClaim ClaimTypeReferenceId="errorMessage"
        PartnerClaimType="ErrorMessage"/>
</OutputClaims>

这样,我声称可以检查步骤 4 。请注意,我还从端点返回了errorMessage。该错误消息稍后将传递给SelfAsserted-RegError技术资料。

根据在后端进行的验证,extension_isEnabled将获得 True False

在步骤 4 上,我们检查extension_isEnabled:

<OrchestrationStep Order="4"
                   Type="ClaimsExchange">
    <Preconditions>
        <Precondition Type="ClaimEquals"
                      ExecuteActionsIf="true">
            <Value>extension_isEnabled</Value>
            <Value>True</Value>
            <Action>SkipThisOrchestrationStep</Action>
        </Precondition>
    </Preconditions>
    <ClaimsExchanges>
         <ClaimsExchange Id="SelfAssertedRegError"
                         TechnicalProfileReferenceId="SelfAsserted-RegError" />
    </ClaimsExchanges>
</OrchestrationStep>

仅当4 false 时,才会执行步骤 extension_isEnabled 。如果它是,则为,我们将完全不调用SkipThisOrchestrationStepSelfAsserted-RegError技术资料。 UserJourney流按预期继续。

关于error-handling - 如何在随后的业务流程步骤中显示从自定义REST API端点返回的错误?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58774940/

10-15 02:38