You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure AD B2C自定义策略中直接跳转至编排步骤时会话无法保留Claim的问题咨询

Azure AD B2C自定义策略中直接跳转至编排步骤时会话无法保留Claim的问题咨询

各位好,我在Azure AD B2C自定义策略的使用中遇到了一个奇怪的问题,想跟大家请教下:

我们目前用自定义策略实现了一个合并登录与注册的用户旅程,登录相关的编排步骤放在旅程的前半部分,注册相关的则在后面。

为了在显示注册页面前获取一些配置信息(会存在Claim里),我们加了一个REST调用的编排步骤,并且为了确保每个会话只调用一次这个REST接口,我们给这个步骤加了ClaimsExist前置条件——只有当目标Claim不存在时才执行这个步骤,否则跳过。对应的配置代码如下:

<OrchestrationStep Order="XX" Type="ClaimsExchange">
  <Preconditions>
    <Precondition Type="ClaimsExist" ExecuteActionsIf="true">
      <Value>myConfigurationValue</Value>
      <Action>SkipThisOrchestrationStep</Action>
    </Precondition>
  </Preconditions>
  <ClaimsExchanges>
    <ClaimsExchange Id="RESTGetRegistrationConfigurationValue" TechnicalProfileReferenceId="REST-GetRegistrationConfigurationValue" />
  </ClaimsExchanges>
</OrchestrationStep>

补充说明下:myConfigurationValue这个Claim已经在REST-GetRegistrationConfigurationValue技术配置里设为了输出Claim,所以第一次调用这个技术配置后,这个Claim应该会被存入会话的claims bag中。

正常流程下的预期行为(已实现)

当用户从登录流程转到注册步骤时,会触发上面这个编排步骤,第一次会调用REST接口获取配置;之后如果用户刷新页面再进入这个编排步骤,因为myConfigurationValue已经在会话里了,前置条件会触发跳过,不会重复调用REST——这部分是符合预期的。

异常情况(问题所在)

但是如果用户通过查询字符串参数直接跳转到这个编排步骤(跳过了前面所有的编排步骤),就会出现每次刷新页面都会重新调用REST接口的情况,看起来myConfigurationValue这个Claim并没有被保留在会话中。

我有点困惑:明明REST技术配置已经把Claim输出到了claims bag里,为什么直接跳转的情况下,同一个会话内再次进入这个编排步骤时,Claim没有被保留,导致前置条件失效?

有没有大佬遇到过类似的问题,或者能给我一些排查的思路?非常感谢!

备注:内容来源于stack exchange,提问作者Mike Suffield

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.22 11:54:50