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.