基于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
。如果它是,则为,我们将完全不调用SkipThisOrchestrationStep
和SelfAsserted-RegError
技术资料。 UserJourney
流按预期继续。关于error-handling - 如何在随后的业务流程步骤中显示从自定义REST API端点返回的错误?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58774940/