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

Azure AD B2C自定义策略REST API响应:对象集合映射与转义字符疑问

Azure AD B2C自定义策略调用REST API的两个问题解答

问题1:能否将REST API响应的对象集合映射为输出声明的对象集合?

Azure AD B2C自定义策略目前不支持直接将REST API返回的对象集合映射为输出声明中的对象集合。官方文档仅支持字符串集合映射,核心原因是B2C的声明系统基于键值对的简单类型结构,没有原生支持复杂的对象类型声明。

如果业务必须保留对象结构信息,可采用两种替代方案:

  • 在REST API端提前处理:将对象集合扁平化,把每个对象的属性拆分为带索引的独立字段(比如把prop2中第一个对象的id和name拆成prop2_0_id、prop2_0_name),再在自定义策略里映射为多个独立声明。
  • 在客户端侧解析:先将对象集合序列化为单个字符串声明返回,在接收JWT的客户端代码中再将该字符串反序列化为对象集合使用。

问题2:对象集合转字符串集合后,JWT中的转义字符能否移除?

可以移除,常用两种处理方式:

  • 在REST API端处理:返回响应时,直接将对象集合序列化为无多余转义的纯字符串(需保证格式符合JSON规范),再作为字符串集合的元素返回给B2C。
  • 在自定义策略中用声明转换处理:添加ReplaceClaimsValue类型的声明转换,针对包含转义字符的声明,替换掉目标转义符(比如\"、\\)。示例XML配置如下:
<ClaimsTransformation Id="RemoveEscapeCharacters" TransformationMethod="ReplaceClaimsValue">
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="yourStringCollectionClaim" TransformationClaimType="inputClaim" />
  </InputClaims>
  <InputParameters>
    <InputParameter Id="oldValue" DataType="string" Value="\" />
    <InputParameter Id="newValue" DataType="string" Value=""/>
  </InputParameters>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="yourStringCollectionClaim" TransformationClaimType="outputClaim" />
  </OutputClaims>
</ClaimsTransformation>

注意需根据实际出现的转义字符调整oldValue的值,确保覆盖所有需要移除的转义情况。

内容的提问来源于stack exchange,提问作者user20034278

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 00:02:08