@FulgerX2007

Как валидировать JWT токен c помощью JWK ключей?

Привет всем.

Хочу валидировать JWT токен на уровне сервера Nginx Plus с использованием JWK ключей.

Пример JWK ключа:
{
  "keys": [
    {
      "kty": "RSA",
      "n": "xxEYtAKiN0pt_XPijJKq8lel-YLcrw0FSf89_UtczfT1pAuF2bjbaL1Jdh5WvNuznJ7g_WKNRMXv6p65pJhWnebFGi2Bg5oac5dCMx3ojNi2sHuEhp4r6jA78kD0KQZhR7ypRLhYrFmre2gc1xoFt7774wFLgsTLsa1lR-nNP2yEpvATIU0e82JmVfdrzdYL3qT9dEHc6NhOVL7vDTK0kJNseabl1ccs61zBUKvVfXpp3W2PgftDJ29SRK_dTFkoKxS3Bbc5d3rwrfDl34TIcH1CVcs7Jk28MFVowdzQeqvZx7cNiQUEqTxn9iXbdsNS-R3irpwr4ET8ABD4atXZJa7c3BmpCemNtvfedK6zNlA0WgmOPNsdrLLCDqoiteQ7CnrogVHm2ReBmR-W-DG0rojX6uxDrduRRZ49InPcgTazDBqtLW2cK0nyYaZaMnFx4TBpSmqReR7hJaSiPrGiSeCz_7hOLdipEJiZE3C0LTj2jUtKc3pRDaJiN4_XjnopPV0gRY70vaiKGcsml1k3smGGfdc7e5gjrKNy-oLydeGuQk-iybA1fpK7nHn-WA8fwOdiozi_QXVEJlmR8Aen8naYNzzjQMn9V_WxUEg0q-JzIaf-nnxFGATBIcNXbBKD0A8rPEVQ8zXnhYEEP1DakC61apGKtMEGn3R5QJP2dJE",
      "e": "AQAB",
      "use": "sig"
    }
  ]
}


Также есть Nginx config:
server {
    listen       80 default_server;
    server_name  localhost;

    # вариант когда JWK ключ находится на том же сервере с Nginx
    location /api/v1/data {
        auth_jwt "localhost";
        auth_jwt_key_file conf.d/key.jwk;
        proxy_pass http://example.com;
    }

    #  вариант когда Nginx запрашивает JWK ключи с другово сервера 
    location /api/v2/data {
        auth_jwt "closed site";
        auth_jwt_key_request /_jwks_uri; # Keys will be fetched by subrequest

        proxy_pass http://example.com;
    }

    location = /_jwks_uri {
        internal;
        proxy_method GET;
        proxy_set_header  Accept "application/json";
        proxy_pass   http://{auth_server_address}/oauth2/.well_known/keys; # Obtain keys from here
    }
}


Вариант когда JWK файл ключей находится на том же сервере с Nginx то все работает хорошо.
Но когда Nginx должен забирать ключи с другого сервера то он выдает такую ошибку
invalid JWK set while sending to client
  • Вопрос задан
  • 328 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы