Переадресация на страницу входа через необходимые детали аутентификации, присутствующие в заголовках запросов в nginx

У меня есть сценарий использования, где мне нужно аутентифицировать пользователя в asticsearch на основе его учетных данных в стороннем приложении. Эта часть выполняется путем создания настраиваемой области, задокументированной гибким сообществом, и получения вдохновения от x-pack Custom realm и включает передачу заголовков запросов, таких как AccessToken, в каждом запросе. Чтобы проверить это, я использовал плагин modheader в chrome, который передает заголовок в каждом запросе.

Теперь я хочу использовать nginx в качестве обратного прокси-сервера для Kibana, в котором входящий запрос будет иметь поле AccessToken в URL-адресе, а после извлечения параметра он будет установлен через proxy_set_header при передаче запроса в Kibana. Однако это не работает, так как я перенаправлен на страницу входа и не аутентифицирован.

Ниже приводится конф, который я использую для nginx .

location ~* ^/(.*) {

error_log logs/kibana.log debug;

set $tenant "";
set $token "";

if ($request_uri ~ ^(.*)Tenant(?:=|%3D)(.*)(?:&|%26)AccessToken(?:=|%3D)(.*)$) {
    set $tenant $2;
    set $token $3;
}

if ($tenant = "") {
    set $tenant $sent_http_Tenant;
    set $token $sent_http_AccessToken;
}

add_header Tenant $tenant;
add_header AccessToken $token;
add_header Authorization "Basic ZWxhc3RpYzpjaGFuZ2VtZQ==";

proxy_set_header X-Forwarded-Host XXX.XX.XX.XX;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://localhost:5601;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
proxy_set_header Authorization "Basic ZWxhc3RpYzpjaGFuZ2VtZQ==";
proxy_set_header Tenant $tenant;
proxy_set_header AccessToken $token;
proxy_pass_request_headers on;

}

Я включил журнал отладки и вижу, что AccessToken (и Tenant) передаются, когда запрос передается в Kibana, хотя я получаю перенаправление с вышестоящего сервера с 302 и местоположением на страницу входа. Однако при использовании плагина modheader нажатие на тот же URL-адрес аутентифицирует и переносит в основное приложение. Что я здесь не так делаю?

0 ответов

Другие вопросы по тегам