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

在OpenID Connect授权码流与Duende Server中为JWT添加org自定义声明

问题解答

1. "org"声明应该附加到哪个JWT?

外部API要求的是最终传入的Bearer Access Token包含"org"声明,而非client_assertion或原始ID Token。

你调用API时传递的是Token Exchange流程生成的token.AccessToken,API只会校验这个Bearer令牌的内容,不会追溯之前的client_assertion或原始ID Token。要让最终的Access Token包含该声明,有两种可行方式:

  • 方式一:在Token Exchange请求中新增参数
    部分授权服务器支持在Token Exchange的POST请求里添加自定义参数,会将其注入到新生成的Access Token中。修改你的请求数据即可:
    var postData = new List<KeyValuePair<string, string>>
    {
        new("subject_token", idToken),
        new("subject_token_type", "urn:ietf:params:oauth:token-type:id_token"),
        new("grant_type", "urn:ietf:params:oauth:grant-type:token-exchange"),
        new("client_assertion_type", "urn:ietf:params:oauth:client-assertion-type:jwt-bearer"),
        new("client_assertion", clientAssertion),
        new("org", "你的组织标识") // 新增该参数
    };
    
  • 方式二:让原始ID Token包含"org"声明
    如果授权服务器的Token Exchange逻辑会映射原始ID Token的声明到新Access Token,可在最初的OIDC认证流程中,请求授权服务器返回带"org"声明的ID Token。比如在认证请求中添加对应scope(如scope=openid profile org,具体需匹配授权服务器配置),这样ID Token携带的"org"声明会被继承到新的Access Token中。

2. 如果加在client_assertion里,终端API能识别吗?

不能。client_assertion只是客户端向授权服务器证明自身身份的凭证,仅在Token Exchange请求阶段被授权服务器校验,不会被传递给外部API,也不会被包含在最终生成的Access Token里。API完全看不到client_assertion的内容,因此加在这里无法满足要求。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 07:43:15