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

Azure B2C:如何让声明解析器在访问令牌中生效?

问题解答

声明解析器并非仅适用于ID令牌,但Azure AD B2C对token端点的自定义参数处理逻辑和authorize端点存在差异:token端点的查询字符串参数不会自动被声明解析器捕获,因为该端点核心职责是处理授权码/刷新令牌交换,默认不会保留这类自定义参数。

以下是两种可行的解决思路:

方案1:通过授权码流程传递参数(推荐)

在authorize端点传入自定义参数(如custom_param=xxx),利用声明解析器捕获后将其存入授权码的上下文数据中,再在令牌颁发流程中从授权码上下文提取该参数并添加到访问令牌:

  • 在用户旅程的TechnicalProfile里,使用OAuth2KeyValue声明解析器捕获authorize端点的参数,示例配置如下:
    <OutputClaim ClaimTypeReferenceId="customParam" DefaultValue="{OAuth2KeyValue:custom_param}" AlwaysUseDefaultValue="true" />
    
  • 确保该声明被包含在授权码颁发的TechnicalProfile输出中,让参数嵌入授权码上下文。
  • 在负责令牌颁发的JwtIssuer类TechnicalProfile中,添加该声明作为输出项,即可让访问令牌包含此参数。

方案2:利用B2C扩展属性临时存储(不推荐)

如果必须在token端点传递参数(不符合OAuth2规范),可通过以下方式实现:

  • 配置REST API技术Profile,在token端点调用时将自定义参数写入提前定义好的用户B2C扩展属性。
  • 在令牌颁发流程中读取该扩展属性,并将其添加到访问令牌。
  • 注意:此方法会修改用户属性,需谨慎处理并发场景,仅作为特殊场景下的备选方案。

需要强调的是,OAuth2规范并未定义token端点支持自定义查询参数,Azure AD B2C也无原生支持直接捕获这类参数,因此方案1是符合标准且更可靠的实现方式。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 05:05:38