#lua #jwt #openresty
#lua #jwt #openresty
Вопрос:
у меня есть токен 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}
где я ошибаюсь?
Комментарии:
1.
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
— вы уверены, что эти условия соблюдены?
Ответ №1:
хорошо, проблема в ключе. я успешно получил ключ pem от jwks с помощью этого другого инструментаhttps://www.npmjs.com/package/jwk-to-pem
проверка теперь работает