Nginx - Teruskan HTTP AUTH - Pengguna?

13

Saya memiliki beberapa masalah dengan Nginx dan Jenkins (Hudson). Saya mencoba menggunakan Nginx sebagai Reverse Proxy untuk instance Jenkins dengan HTTP Basic Authentication.

Ini berfungsi sejauh ini, tetapi saya tidak tahu cara melewati Header dengan Nama Pengguna Otentikasi?

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
sumber
1
Catatan Anda mungkin ingin tambahan 'd' di "X-Forwared-User".
Paul

Jawaban:

16

Coba tambahkan arahan ini ke blok lokasi Anda

proxy_set_header Authorization $http_authorization;
proxy_pass_header  Authorization;
Andrei Mikhaltsov
sumber
Header ini lewat: Nama pengguna: Dasar YXJuZTpraWxsZXI, bukan nama yang benar dari http auth (;
opHASnoNAME
6
Ini harus berupa string yang disandikan base64 en.wikipedia.org/wiki/Basic_access_authentication#cite_note-8 cobalah untuk mendekodekannya
Andrei Mikhaltsov
Header otorisasi harus header yang disandikan base64, ya. Tapi bukan itu pertanyaannya. Pertanyaannya adalah tentang meneruskan nama pengguna auth di header, bukan header otorisasi penuh.
Olli
1
YXJuZTpraWxsZXImenerjemahkan ke arne:killer- contoh yang bagus @opHASnoNAME :-)
Enda Farrell
pass_header dan set_header ...? bukankah ini dua kali lebih atau kurang efek yang sama? Keduanya harus bekerja, bukan?
phip1611
6

Agar ini berfungsi dengan plugin autentikasi proxy terbalik Jenkins:

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

Jika Anda tidak mengatur ulang Authorizationtajuk, nginx akan meneruskannya secara default, dan saat mengaktifkan plugin autentikasi proxy terbalik, Jenkins (jetty) akan mencoba mengautentikasi ulang pengguna, dan gagal karenanya.

nginx versi 1.12.1, Jenkins 2.113.

Olli
sumber
TERIMA KASIH! Inilah yang saya cari. BANYAK dihargai.
Erutan409