Nginx - İleri HTTP AUTH - Kullanıcı?


14

Nginx ve Jenkins (Hudson) ile biraz sorunum var. HTTP Temel Kimlik Doğrulaması ile Jenkins örneği için Ters Proxy olarak Nginx kullanmaya çalışıyorum.

Şimdiye kadar çalışıyor, ancak Kimlik Doğrulaması Kullanıcı Adı ile başlık geçmek için hiçbir fikrim yok?

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
Muhtemelen "X-Forwared-User" da ekstra bir 'd' istediğinizi unutmayın.
Paul

Yanıtlar:


17

Bu yönergeleri konum bloğunuza eklemeyi deneyin

proxy_set_header Authorization $http_authorization;
proxy_pass_header  Authorization;

Bu başlık geçiyor: Kullanıcı adı: Temel YXJuZTpraWxsZXI, http auth'dan doğru isim değil (;
opHASnoNAME

6
Bu base64 dize kodlanmış olmalıdır en.wikipedia.org/wiki/Basic_access_authentication#cite_note-8 Çözümün deneyin
Andrei Mikhaltsov

Yetkilendirme başlığı, base64 kodlu başlık olmalı, evet. Ama sorunun konusu bu değil. Soru, tam yetkilendirme başlığı değil, başlıklarda yetkilendirme kullanıcı adını geçirmektir.
Olli

1
YXJuZTpraWxsZXIiçin deşifre arne:killergüzel bir örnek @opHASnoNAME :-) -
Enda Farrell

pass_header ve set_header ...? bu iki kat daha fazla veya daha az aynı etki değil mi? İkisi de işe yaramalı, değil mi?
phip1611

6

Bunun Jenkins ters proxy yetkilendirme eklentisiyle çalışmasını sağlamak için:

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

AuthorizationÜstbilgiyi sıfırlamazsanız , nginx bunu varsayılan olarak iletir ve ters proxy kimlik doğrulama eklentisini etkinleştirirken Jenkins (iskelesi) kullanıcının yeniden kimlik doğrulamasını dener ve başarısız olur.

nginx sürüm 1.12.1, Jenkins 2.113.


TEŞEKKÜR EDERİM! Tam da aradığım şey buydu. ÇOK takdir.
Erutan409
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.