Mungkin untuk menambahkan otentikasi akses HTTP dasar melalui HAProxy?

25

Saya telah berhasil mensetup HAProxy di depan server HTTP yang tidak dapat saya kendalikan .

Apakah mungkin untuk mengkonfigurasi HAProxy untuk menambahkan otentikasi HTTP sederhana ke semua situs, mengingat saya tidak dapat mengkonfigurasi ini di backend?

Terima kasih,

Lars

Lars Schneider
sumber

Jawaban:

36

Saya harus melakukan ini hari ini sendiri (karena IIS 7.5 aneh tidak benar-benar mendukung otentikasi terhadap apa pun selain akun pengguna Windows atau AD!) ...

Ini semua kodenya

userlist UsersFor_AcmeCorp
  user joebloggs insecure-password letmein

backend HttpServers
  .. normal backend stuff goes here as usual ..
  acl AuthOkay_AcmeCorp http_auth(UsersFor_AcmeCorp)
  http-request auth realm AcmeCorp if !AuthOkay_AcmeCorp

Saya mendokumentasikannya sedikit lebih baik di sini: http://nbevans.wordpress.com/2011/03/03/cultural-learnings-of-ha-proxy-for-make-benefit/

nbevans
sumber
2
+1 Hanya ingin menambahkan bahwa Anda juga dapat menambahkan baris terakhir dalam frontenddefinisi daripada backendjika Anda inginkan. Dan realm xxxxbagian itu opsional.
UpTheCreek
Saya menerapkan ini tetapi yang terjadi adalah bahwa pada setiap panggilan api berikutnya saya mendapatkan popup yang meminta otentikasi. Ini membuatnya tidak dapat digunakan. Apakah ada tempat dimana diminta sekali kemudian di-cache untuk sisa panggilan? Itu akan sangat membantu.
shshnk
2

Saya pikir ini sebenarnya mungkin, tetapi saat ini saya hanya dapat menemukan contoh untuk membuat Anda setengah ...

http://haproxy.1wt.eu/download/1.4/doc/configuration.txt adalah Alkitab Anda.

Lihat bagian 3.4 (Daftar Pengguna)

Itu dimulai:

Dimungkinkan untuk mengontrol akses ke bagian frontend / backend / dengarkan atau ke statistik http dengan hanya mengizinkan pengguna yang diautentikasi dan diotorisasi. Untuk melakukan ini, diperlukan untuk membuat setidaknya satu daftar pengguna dan untuk menentukan pengguna.

Bagian itu menjelaskan cara mengatur daftar pengguna. Contoh di bagian itu cukup lengkap jadi salin kalau perlu.

Selanjutnya, perlu mencari tahu cara menerapkannya ... Saya pikir jawabannya ada di bagian 7.5.3 (Matching at Layer 7)

Saya pikir mungkin sesederhana menggunakan yang berikut ini di sebuah acl:

http_auth(userlist)
http_auth_group(userlist) <group> [<group>]*
  Returns true when authentication data received from the client matches
  username & password stored on the userlist. It is also possible to
  use http_auth_group to check if the user is assigned to at least one
  of specified groups.

Sekali lagi, saya belum mengujinya, tapi itulah yang saya baca di dokumentasi karena menyarankan itu mungkin.

Saya harap itu cukup untuk membantu Anda memulai?

Mahal
sumber
Teriakan yang bagus, kurasa aku sudah terbiasa sekarang!
Mahal
Meskipun melihatnya lagi, sepertinya tidak diperbarui dalam beberapa bulan ... Saya belum memeriksa perubahan spesifik antara itu dan dinding teks tetapi menganggap ada beberapa.
Mahal
1
Tautan Alkitab 'yang lebih baik' adalah 404 '. Yang lebih baik adalah ini haproxy.org/#docs . Di sana Anda menemukan barang manual HTML / teks.
Glenn Plas
Tautan untuk mendapatkan di manual: cbonte.github.io/haproxy-dconv .
slm