#authentication #nginx #jwt #nginx-reverse-proxy
#идентификация #nginx #агентство jwt #nginx-обратный прокси
Вопрос:
Можно ли прочитать заголовок авторизации HTTP в nginx plus и поместить носитель jwt из него в пользовательский заголовок HTTP для запроса прокси-сервера к.. например, внутренним микросервисам? Nginx plus выступает в качестве шлюза api/безопасности и должен аутентифицировать запрос с помощью JWT внутри заголовка авторизации. После правильной проверки JWT носитель должен быть помещен в пользовательский HTTP-заголовок для прокси-запроса к серверной веб-службе.
Я попробовал следующее:
location / { auth_jwt "API"; auth_jwt_require $valid_app_id $valid_issuer $valid_sub; auth_jwt_key_request /public_jws_keys; proxy_set_header X-ClientAuthToken $http_authorization; proxy_pass_header X-ClientAuthToken; location /firstLocation { proxy_pass http://url-to-first-location; } location /secondLocation { proxy_pass http://url-to-second-location; } ... } location /public_jws_keys { internal; proxy_method GET; proxy_cache jwk; # Cache responses proxy_pass "http://url-to-idp/jwks"; }
Развертывание работает нормально. Но даже несмотря на то, что я отправляю допустимый запрос с допустимым JWT в заголовке авторизации nginx, он отвечает 401. Как только я удалю строку proxy_set_header X-ClientAuthToken $http_authorization;, тот же запрос будет аутентифицирован…
Я часами гуглил в Интернете, а также пытался ознакомиться с документацией nginx… К сожалению, безуспешно… Запрещает ли nginx plus копирование значений из HTTP-заголовка авторизации в другие переменные/заголовки?
Заранее благодарю вас за любые подсказки..