у меня есть токен jwt из процесса входа в систему aws cognito. этот токен должен быть отправлен из приложения в какой-либо другой 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
преобразовать jwks в pem с помощью jwks2pem
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}
где я не прав?
This library requires an nginx build with OpenSSL, the ngx_lua module, the LuaJIT 2.0, the lua-resty-hmac, and the lua-resty-string
- Вы уверены, что эти условия соблюдены? - person s-ol   schedule 02.04.2019