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

如何在Azure AD生成AccessToken时传入自定义testId并在验证时获取

解决Azure AD客户端凭据模式下动态传递自定义参数的方案

针对你在客户端凭据(client_credentials)模式下需要动态传入testId并在验证token时获取的需求,以下是几种可行的实现方式:

1. 使用OAuth 2.0的claims参数(推荐)

Azure AD支持在token请求中通过claims参数传递动态声明,具体操作如下:

  • 在POST请求的负载中添加claims字段,以转义后的JSON字符串格式传入testId:
{
  "client_id": "你的客户端ID",
  "client_secret": "你的客户端密钥",
  "scope": "你的权限范围",
  "grant_type": "client_credentials",
  "claims": "{\"id_token\":{\"testId\":{\"value\":\"动态testId值\"}}}"
}
  • 提前在Azure AD应用注册的令牌配置中添加对应自定义声明:选择声明类型为ID令牌或访问令牌(根据你使用的token类型),名称设为testId,源类型选提供程序,无需硬编码值。
  • 验证token时,可直接从token的payload中读取testId字段的值。

2. 应用角色动态赋值(适用于关联权限的场景)

如果testId对应业务中的特定资源标识,可通过以下方式实现:

  • 在Azure AD应用注册中创建名为testId的应用角色,开启动态赋值权限。
  • 获取token前,通过Azure Graph API为当前服务主体临时分配该角色并传入动态testId值,再发起token请求。
  • 此方式适合需要将testId与权限绑定的场景,但操作相对繁琐,需额外配置Graph API权限。

3. 自定义令牌中转服务(完全自定义控制)

若上述方式无法满足需求,可搭建中间令牌服务:

  • 客户端先向自定义服务发起请求,传入testId及Azure AD token的基础请求参数。
  • 自定义服务向Azure AD申请基础token后,将testId添加到token的payload中,用自有密钥重新签名后返回给客户端。
  • 验证token时,先验证自定义服务的签名,读取testId,同时可校验原Azure AD token的有效性。
  • 此方式灵活性最高,但需额外维护服务及密钥管理体系。

注意事项

  • 客户端凭据模式下,Azure AD默认不会在访问令牌中包含自定义声明,必须通过claims参数显式请求,且需提前完成声明配置。
  • 使用claims参数时,需确保JSON字符串已正确转义,避免请求解析失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 19:10:06