我有一个来自aws cognito登录过程的jwt令牌。该令牌需要从应用程序发送到其他一些api(通过cookie或bearer标头,我尚未决定)。
接收api已被代理在nginx / openresty之后,因此我正在考虑在上游之前验证jwt令牌
我正在使用此库(好像是最新的库) https://github.com/cdbattags/lua-resty-jwt
然后我按照以下步骤操作:
从我的帐户下载jwks文件
wget https://cognito-idp.eu-west-1.amazonaws.com/eu-west-1_5zCVSiMVH/.well-known/jwks.json
使用jwks2pem
将jwks转换为pem cat jwks.json| jwks2pem > key.pem
然后输入此代码
local jwt = require "resty.jwt"
local key = [[ -----BEGIN PUBLIC KEY-----
(content of key.pem)
-----END PUBLIC KEY-----
]]
local jwt_token = ""
local jwt_obj = jwt:load_jwt(jwt_token)
local verified = jwt:verify_jwt_obj(key, jwt_obj)
ngx.say(cjson.encode(jwt_obj))```
代码失败:
$ resty jwt.lua
{"valid":false,"reason":"invalid algorithm: RS256","verified":false}
我错了吗?
答案 0 :(得分:0)
好的,问题是关键。 我已经使用其他工具https://www.npmjs.com/package/jwk-to-pem
从jwks成功获得了pem密钥现在验证有效