Nginx - Forward HTTP AUTH - Użytkownik?


13

Mam problem z Nginx i Jenkins (Hudson). Próbuję użyć Nginx jako odwrotnego serwera proxy dla instancji Jenkins z podstawowym uwierzytelnianiem HTTP.

Jak dotąd działa, ale nie mam pojęcia, jak przekazać nagłówek przy użyciu nazwy użytkownika uwierzytelniania?

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
Zauważ, że prawdopodobnie potrzebujesz dodatkowego „d” w „X-Forwared-User”.
Paul

Odpowiedzi:


16

Spróbuj dodać te dyrektywy do swojego bloku lokalizacji

proxy_set_header Authorization $http_authorization;
proxy_pass_header  Authorization;

Nagłówek ten przechodzi: Nazwa użytkownika: Podstawowy YXJuZTpraWxsZXI, niepoprawna nazwa z http auth (;
opHASnoNAME

6
Musi to być ciąg zakodowany w standardzie base64 en.wikipedia.org/wiki/Basic_access_authentication#cite_note-8 spróbuj go zdekodować
Andrei Mikhaltsov

Nagłówek autoryzacji musi być nagłówkiem zakodowanym w standardzie base64, tak. Ale nie o to chodzi w tym pytaniu. Pytanie dotyczy przekazania nazwy użytkownika autoryzacji w nagłówkach, a nie pełnego nagłówka autoryzacji.
Olli,

1
YXJuZTpraWxsZXIdekoduje do arne:killer- ładny przykład @opHASnoNAME :-)
Enda Farrell

pass_header i set_header ...? czy to nie jest dwa razy mniej więcej taki sam efekt? Oba powinny działać, prawda?
phip1611

6

Aby to działało z wtyczką uwierzytelniania odwrotnego proxy Jenkins:

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

Jeśli nie zresetujesz Authorizationnagłówka, nginx domyślnie prześle go dalej, a gdy włączysz wtyczkę autoryzacji zwrotnego proxy, Jenkins (jetty) spróbuje ponownie uwierzytelnić użytkownika, ale to się nie powiedzie.

nginx wersja 1.12.1, Jenkins 2.113.


DZIĘKUJĘ CI! Właśnie tego szukałem. DUŻO docenione.
Erutan409
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.