【问题标题】:How to sign a JWT with a private key in LUA如何在 LUA 中使用私钥签署 JWT
【发布时间】:2021-02-06 14:45:46
【问题描述】:

我正在使用 kubernetes nginx 入口控制器

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

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

我用的是lua-resty-jwt,好像是常用的lib

RUN luarocks install lua-resty-jwt

nginx.tmpl sn-p:

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 入口线程中止:运行时错误:./lualib/resty/jwt.lua:517:尝试索引本地 'jwt_obj'(一个 nil 值)

我做错了什么?据我了解lua,我声明了一个本地jwt,它是一个lua表,所以不是nil,对吗?

【问题讨论】:

  • 也许需要一个分号而不是点? require("resty.jwt"):sign(private_key, jwt)
  • @Ivan Shatsky,确切地说:github.com/SkyLothar/lua-resty-jwt#sign
  • 好吧,我已经用分号试过了,结果一样:(

标签: nginx lua jwt


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2019-05-26
    • 2019-08-27
    • 2016-12-12
    • 2014-11-01
    • 2019-05-13
    • 1970-01-01
    • 2017-07-04
    • 2022-08-06
    • 1970-01-01
    相关资源
    最近更新 更多