lua - 使用 lua/openresty 验证 jwt 令牌
问题描述
我有一个来自 aws cognito 登录过程的 jwt 令牌。这个令牌需要从应用程序发送到其他一些 api(通过 cookie 或承载头,我还没有决定)。
接收 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}
我哪里错了?
解决方案
好的,问题是关键。我已经使用其他工具https://www.npmjs.com/package/jwk-to-pem从 jwks 成功获得了 pem 密钥
验证现在有效
推荐阅读
- pandas - 更快的出栈方式
- cmd - 我需要搜索一些目录以查找 DAV 文件,如果有触发任务
- nginx - 错误后退在 nginx pod 中重新启动失败的容器
- jupyter-notebook - 在 Jupyter Notebook 中正确换行的正确配置选项是什么?
- reactjs - 从状态初始化的 react-final-form 中带有 react-select 的条件下拉列表
- macos - 有没有办法自动化内置在颜色选择器中的操作系统?
- angular - 作为对象接收的角度数据
- python - 如何在 Python 中查找字符串中的偶数
- python - 导入多个excel文件并合并成单个pandas df,源名称为列
- python - K.eval() 在 keras 中给出内存不足错误