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;

}

opHASnoNAME
źródło
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;
Andriej Michałow
źródło
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.

Olli
źródło
DZIĘKUJĘ CI! Właśnie tego szukałem. DUŻO docenione.
Erutan409