Nginx - Chuyển tiếp HTTP AUTH - Người dùng?


13

Tôi có một số rắc rối với Nginx và Jenkins (Hudson). Tôi đang cố gắng sử dụng Nginx làm Proxy ngược cho phiên bản Jenkins với Xác thực cơ bản HTTP.

Nó hoạt động cho đến nay, nhưng tôi không biết làm thế nào để vượt qua Tiêu đề với Tên người dùng Xác thực?

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
Lưu ý rằng bạn có thể muốn có thêm 'd' trong "X-Forwared-User".
Paul

Câu trả lời:


16

Hãy thử thêm chỉ thị này vào khối vị trí của bạn

proxy_set_header Authorization $http_authorization;
proxy_pass_header  Authorization;

Tiêu đề này đang vượt qua: Tên người dùng: YXJuZTpraWxsZXI cơ bản, không phải tên chính xác từ http auth (;
opHASnoNAME

6
Đây phải là chuỗi mã hóa base64 en.wikipedia.org/wiki/Basic_access_authentication#cite_note-8 cố gắng giải mã nó
Andrei Mikhaltsov

Tiêu đề ủy quyền phải là tiêu đề được mã hóa base64, vâng. Nhưng đó không phải là những gì câu hỏi về. Câu hỏi là về việc chuyển tên người dùng auth trong các tiêu đề, không phải tiêu đề ủy quyền đầy đủ.
Olli

1
YXJuZTpraWxsZXIgiải mã thành arne:killer- ví dụ hay @opHASnoNAME :-)
Enda Farrell

pass_header và set_header ...? Đây không phải là hai lần nhiều hơn hoặc ít hơn cùng một hiệu ứng? Cả hai nên làm việc, không nên?
phip1611

6

Để làm việc này với plugin auth proxy ngược của Jenkins:

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

Nếu bạn không đặt lại Authorizationtiêu đề, nginx sẽ chuyển tiếp theo mặc định và khi bật plugin xác thực proxy ngược, Jenkins (cầu cảng) sẽ cố gắng xác thực lại người dùng và không thành công.

phiên bản nginx 1.12.1, Jenkins 2.113.


CẢM ƠN BẠN! Điều này thật đúng với gì mà tôi đã tìm kiếm. Nhiều đánh giá cao.
Erutan409
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.