проверить токен jwt с помощью lua/openresty

у меня есть токен jwt из процесса входа в систему aws cognito. этот токен должен быть отправлен из приложения в какой-либо другой API (через файл cookie или заголовок носителя, я еще не решил).

принимающий 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. преобразовать jwks в pem с помощью jwks2pem

    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}

где я не прав?


person George Livanoss    schedule 29.03.2019    source источник
comment
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


Ответы (1)


хорошо, проблема в ключе. я успешно получил ключ pem от jwks с помощью этого другого инструмента https://www.npmjs.com/package/jwk-to-pem

проверка теперь работает

person George Livanoss    schedule 03.04.2019