Nginx - Forward HTTP AUTH - Utente?


13

Ho dei problemi con Nginx e Jenkins (Hudson). Sto cercando di utilizzare Nginx come proxy inverso per l'istanza Jenkins con autenticazione di base HTTP.

Funziona finora, ma non ho idea di come passare l'intestazione con il nome utente di autenticazione?

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
Nota che probabilmente vuoi una "d" extra in "X-Forwared-User".
Paul,

Risposte:


16

Prova ad aggiungere queste direttive al tuo blocco di posizione

proxy_set_header Authorization $http_authorization;
proxy_pass_header  Authorization;

Questa intestazione sta passando: Nome utente: YXJuZTpraWxsZXI di base, non il nome corretto da http auth (;
opHASnoNAME

6
Deve essere una stringa codificata in base64 en.wikipedia.org/wiki/Basic_access_authentication#cite_note-8 prova a decodificarlo
Andrei Mikhaltsov

L'intestazione dell'autorizzazione deve essere un'intestazione codificata in base64, sì. Ma non è questo il problema. La domanda riguarda il passaggio del nome utente auth nelle intestazioni, non l'intestazione di autorizzazione completa.
Olli,

1
YXJuZTpraWxsZXIdecodifica in arne:killer- bell'esempio @opHASnoNAME :-)
Enda Farrell il

pass_header e set_header ...? questo non è due volte più o meno lo stesso effetto? Entrambi dovrebbero funzionare, no?
phip1611,

6

Per farlo funzionare con il plugin di autenticazione proxy inverso Jenkins:

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

Se non ripristini l' Authorizationintestazione, nginx lo inoltra per impostazione predefinita e quando abilita il plug-in di proxy proxy inverso, Jenkins (molo) proverà a riautenticare l'utente e fallisce.

nginx versione 1.12.1, Jenkins 2.113.


GRAZIE! Questo e 'esattamente quello che stavo cercando. Molto apprezzato.
Erutan409,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.