Nginx - Вперед HTTP AUTH - Пользователь?


13

У меня проблемы с Нгинксом и Дженкинсом (Хадсон). Я пытаюсь использовать Nginx в качестве обратного прокси-сервера для экземпляра Jenkins с базовой аутентификацией HTTP.

Пока это работает, но я понятия не имею, как передать заголовок с именем пользователя для аутентификации?

location / {
  auth_basic "Restricted";
  auth_basic_user_file /usr/share/nginx/.htpasswd;
  sendfile off;

  proxy_pass         http://192.168.178.102:8080;
  proxy_redirect     default;
  proxy_set_header   Host             $http_host;
  proxy_set_header   X-Real-IP        $remote_addr;
  proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
  proxy_set_header   X-Forwarded-User $http_authorization; 
  proxy_max_temp_file_size 0;

  #this is the maximum upload size
  client_max_body_size       10m;
  client_body_buffer_size    128k;

  proxy_connect_timeout      90;
  proxy_send_timeout         90;
  proxy_read_timeout         90;             
  proxy_buffer_size          4k;
  proxy_buffers              4 32k;
  proxy_busy_buffers_size    64k;
  proxy_temp_file_write_size 64k;

}


1
Обратите внимание, что вы, вероятно, хотите добавить дополнительную букву «d» в «X-Forwared-User».
Пол

Ответы:


16

Попробуйте добавить эти директивы в ваш блок местоположения

proxy_set_header Authorization $http_authorization;
proxy_pass_header  Authorization;

Этот заголовок пропускает: Имя пользователя: Basic YXJuZTpraWxsZXI, не правильное имя из http auth (;
opHASnoNAME

6
Это должна быть строка в кодировке base64 en.wikipedia.org/wiki/Basic_access_authentication#cite_note-8 попытаться ее расшифровать
Андрей Михальцов

Заголовок авторизации должен быть в кодировке base64, да. Но вопрос не в этом. Речь идет о передаче имени пользователя auth в заголовках, а не заголовка полной авторизации.
Олли

1
YXJuZTpraWxsZXIдекодирует arne:killer- хороший пример @opHASnoNAME :-)
Энда Фаррелл

pass_header и set_header ...? разве это не в два раза более или менее один и тот же эффект? Оба должны работать, не так ли?
phip1611

6

Чтобы заставить это работать с плагином аутентификации обратного прокси Jenkins:

proxy_set_header Authorization "";
proxy_set_header X-Forwarded-User $remote_user;

Если вы не сбросите Authorizationзаголовок, nginx будет перенаправлять его по умолчанию, а при включении плагина обратной аутентификации прокси-сервера Jenkins (jetty) попытается повторно подтвердить подлинность пользователя, и при этом произойдет сбой.

nginx версия 1.12.1, Jenkins 2.113.


СПАСИБО! Это именно то, что я искал. Очень признателен.
Erutan409
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.