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

Azure AD B2C中向REST API声明交换传递PolicyId报错求助

解决Azure AD B2C REST技术配置文件传递PolicyId的"未定义"错误

我帮你搞定这个问题!你收到的policyId未定义错误是因为Azure AD B2C要求所有在技术配置文件中引用的声明类型(ClaimType)必须先在策略文件里明确定义,哪怕你要传递的是内置的{Policy:PolicyId}值也不例外。下面是具体的解决步骤:

1. 在TrustFrameworkExtensions.xml中定义policyId声明类型

找到文件里的<BuildingBlocks>节点,在<ClaimsSchema>下添加这个声明类型的定义:

<BuildingBlocks>
  <ClaimsSchema>
    <!-- 保留你已有的其他声明类型 -->
    <ClaimType Id="policyId">
      <DisplayName>Policy Identifier</DisplayName>
      <DataType>string</DataType>
      <UserHelpText>The unique identifier of the policy that initiated the request.</UserHelpText>
    </ClaimType>
  </ClaimsSchema>
</BuildingBlocks>

这一步是告诉AD B2C:policyId是一个合法的字符串类型声明,可用于传递数据。

2. 更新REST技术配置文件的InputClaim

回到你的REST技术配置文件部分,保留你原来的InputClaim配置即可——现在因为已经定义了policyId声明类型,AD B2C就不会再报错了:

<InputClaim ClaimTypeReferenceId="policyId" AlwaysUseDefaultValue="true" DefaultValue="{Policy:PolicyId}" />

这里的{Policy:PolicyId}是AD B2C的内置策略变量,会自动替换为当前执行的自定义策略的ID,刚好满足你区分不同调用策略的需求。

额外注意事项

  • 因为你所有的自定义策略都以TrustFrameworkExtensions.xml为BasePolicy,所以只需要在这个基础文件里定义一次policyId声明类型,所有继承它的子策略都能直接使用这个配置,无需重复定义。
  • 可以在REST API端做个简单验证,确认接收到的policyId值是否符合预期的策略ID。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 07:44:40