verify a jwt token with lua/openresty
我有一个来自aws cognito登录过程的jwt令牌。此令牌需要从应用程序发送到其他一些api(通过cookie或bearer标头,但我尚未决定)。
接收api已被代理在nginx / openresty之后,因此我正在考虑在上游
之前验证jwt令牌
我正在使用此库(好像是最新的库)
https://github.com/cdbattags/lua-resty-jwt
然后我按照以下步骤操作:
从我的帐户
下载jwks文件
使用jwks2pem将jwks转换为pem
然后输入此代码
1 2 3 4 5 6 7 8 9 10 11 12 13 | 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))``` |
代码失败:
1 2 | $ resty jwt.lua {"valid":false,"reason":"invalid algorithm: RS256","verified":false} |
我错了吗?
好的,问题是关键。
我已经使用其他工具https://www.npmjs.com/package/jwk-to-pem
从jwks成功获得了pem密钥
现在可以进行验证了