用lua / openresty验证一个jwt标记

问题描述 投票:0回答:1

我从aws cognito登录过程中获得了一个jwt令牌。这个令牌需要从应用程序发送到其他一些api(通过cookie或bearer标头,我还没有决定)。

接收apis已被代理在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}

哪里我错了?

lua jwt openresty
1个回答
0
投票

好的,问题是关键。我用其他工具https://www.npmjs.com/package/jwk-to-pem成功地从jwks获得了pem键

验证现在有效

© www.soinside.com 2019 - 2024. All rights reserved.