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

KrakenD社区版如何自动生成JWT并添加至请求头?

KrakenD自动生成后端JWT令牌问题解答

社区版支持情况

社区版的auth/signer组件仅用于验证传入请求的JWT签名,并非用来给后端生成并注入JWT的工具,所以你之前的配置不会生效。

至于Lua脚本方案,社区版默认不包含luajwtjitsi库,无法直接通过Lua生成JWT。要在社区版实现该需求,只能通过自定义Go插件完成:

  1. 编写Go插件,在请求转发到后端的生命周期钩子中生成JWT
  2. 将生成的JWT以Bearer {token}格式添加到Authorization请求头
  3. 编译插件并配置到KrakenD中

简单插件代码框架示例:

package main

import (
    "github.com/devopsfaith/krakend/config"
    "github.com/devopsfaith/krakend/proxy"
    "github.com/lestrrat-go/jwx/v2/jwt"
    "net/http"
    "time"
)

func NewBackendJWTSigner(next proxy.Proxy) proxy.Proxy {
    return proxy.ProxyFunc(func(req *http.Request, ctx proxy.Context) (*http.Response, error) {
        // 生成JWT
        token, err := jwt.NewBuilder().
            Issuer("your-client-id").
            IssuedAt(time.Now()).
            Claim("client_id", "your-client-id").
            Claim("user_id", "your-user-id").
            Sign(jwt.WithHS256([]byte("your-secret")))
        if err != nil {
            return nil, err
        }
        // 添加Authorization头
        req.Header.Set("Authorization", "Bearer "+string(token))
        // 继续转发请求
        return next.ServeHTTP(req, ctx)
    })
}

func RegisterHandlers(cfg config.ServiceConfig, p proxy.Proxy) proxy.Proxy {
    return NewBackendJWTSigner(p)
}

企业版支持情况

KrakenD企业版提供了Backend JWT Signer功能(对应auth/client配置项),可直接通过配置实现自动为后端请求生成JWT并注入Authorization头,无需开发插件。

示例配置(添加到backend的extra_config中):

"extra_config": {
  "auth/client": {
    "alg": "HS256",
    "signing_key": "<your-secret>",
    "issuer": "<your-client-id>",
    "claims": {
      "client_id": "<your-client-id>",
      "user_id": "<user-id>",
      "user_representation": "<user-representation>"
    },
    "header_name": "Authorization",
    "header_prefix": "Bearer "
  }
}

该配置会自动生成符合要求的JWT并添加到请求头中,完全满足你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 21:18:11