如何在LUA中使用私钥签署JWT

我正在使用Kubernetes Nginx Ingress控制器

FROM k8s.gcr.io/ingress-nginx/controller:v0.40.2

尝试在我的nginx.tmpl中签署JWT

我使用lua-resty-jwt,这似乎是常用的库

RUN luarocks install lua-resty-jwt

nginx.tmpl片段:

local now = ngx.time()
local jwt = {
   header = {
      typ = "JWT",
      alg = "RS256",
      kid = "kid"
   },
   payload = {
      iss = "nginx",
      env = "dev",
      sub = "sub",
      client_id = "client_id",
      exp = now + 60,
   }
}

local private_key = "${privateKeyPemString}"
local signed_jwt = require("resty.jwt").sign(private_key, jwt)

当我尝试时,我收到以下错误: Lua Entry Thread Aborted: 运行时错误:./lualib/resty/jwt.lua:517:尝试索引本地'jwt_obj'(空值)

我做错了什么?就我理解的Lua而言,我声明了一个本地jwt,它是一个Lua表,所以不是空值,我对吗?

点赞
用户5777986
用户5777986

我最终在 openidc.lua 中创建了一个新的方法,该方法显然包含了调用 jwt.lua 所需的所有必要内容。但是不确定直接从 nginx.tmpl 调用它还缺少什么。

我最终在 `openidc.lua` 中创建了一个新的方法,该方法显然包含了调用 `jwt.lua` 所需的所有必要内容。但是不确定直接从 `nginx.tmpl` 调用它还缺少什么。
2020-10-26 09:30:54