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;

Цей заголовок проходить: Ім'я користувача: Основне YXJuZTpraWxsZXI, не правильне ім’я з http auth (;
opHASnoNAME

6
Це повинно бути кодованим рядком base64 en.wikipedia.org/wiki/Basic_access_authentication#cite_note-8 спробуйте його розшифрувати
Андрій Михальцов,

Заголовок авторизації повинен бути кодованим заголовком base64, так. Але не в цьому питання. Питання стосується передачі автентифікаційного імені користувача в заголовки, а не повного заголовка авторизації.
Оллі

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 передасть це за замовчуванням, і при включенні зворотного додатка для авторизації проксі-сервера, Дженкінс (jetty) спробує повторно аутентифікувати користувача, і не вдасться до цього.

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


ДЯКУЮ! Це саме те, що я шукав. Цінується.
Erutan409
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.