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

Kong中Request Transformer注入X-User-Id:{{jwt.claim.sub}}失败求助

解决Kong中OpenID验证后注入用户ID请求头的问题

核心问题原因

Request Transformer(旧版)不支持直接引用{{jwt.claim.sub}}这类模板语法,该语法并非Kong通用的变量引用规则,因此插件会将其作为字符串原样传递给后端。

可行解决方案

方案1:改用Request Transformer Advanced插件

该插件支持从Kong请求上下文中读取变量,语法为${ctx.变量名}。OpenID插件验证成功后,会将用户声明存储在ngx.ctx.authenticated_claims中,配置步骤如下:

  • 安装并启用request-transformer-advanced插件到目标路由/服务
  • 在插件配置的添加请求头区域,设置:
    X-User-Id: ${ctx.authenticated_claims.sub}

方案2:使用Pre-function插件手动添加请求头

若不想更换插件,可通过Lua代码直接操作请求上下文:

  • 安装并启用pre-function插件,确保其执行顺序在OpenID插件之后
  • 在插件的functions配置中添加以下代码:
local authenticated_claims = ngx.ctx.authenticated_claims
if authenticated_claims and authenticated_claims.sub then
    ngx.req.set_header("X-User-Id", authenticated_claims.sub)
end

这段代码会检查上下文内的用户声明,若存在sub字段则自动添加对应请求头。

关键验证步骤

  1. 确认OpenID插件配置正确:可启用Kong的debug插件,查看请求详情的ctx部分是否包含authenticated_claims.sub
  2. 核对插件执行顺序:必须保证OpenID插件先于请求头修改类插件(Request Transformer Advanced/Pre-function)执行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 06:03:15