使用lua / openresty

时间:2019-03-29 16:11:35

标签: lua jwt openresty

我有一个来自aws cognito登录过程的jwt令牌。该令牌需要从应用程序发送到其他一些api(通过cookie或bearer标头,我尚未决定)。

接收api已被代理在nginx / openresty之后,因此我正在考虑在上游之前验证jwt令牌

我正在使用此库(好像是最新的库) https://github.com/cdbattags/lua-resty-jwt

然后我按照以下步骤操作:

  1. 从我的帐户下载jwks文件

    wget https://cognito-idp.eu-west-1.amazonaws.com/eu-west-1_5zCVSiMVH/.well-known/jwks.json

  2. 使用jwks2pem

    将jwks转换为pem

    cat jwks.json| jwks2pem > key.pem

  3. 然后输入此代码

    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}

我错了吗?

1 个答案:

答案 0 :(得分:0)

好的,问题是关键。 我已经使用其他工具https://www.npmjs.com/package/jwk-to-pem

从jwks成功获得了pem密钥

现在验证有效