Czy można dodać podstawowe uwierzytelnianie dostępu HTTP za pośrednictwem HAProxy?

25

Pomyślnie skonfigurowałem HAProxy przed serwerem HTTP, nad którym nie mam kontroli .

Czy można skonfigurować HAProxy, aby dodać Proste uwierzytelnianie HTTP do wszystkich witryn, pamiętając, że nie mogę tego skonfigurować na wewnętrznej bazie danych?

Dzięki,

Lars

Lars Schneider
źródło

Odpowiedzi:

36

Musiałem to zrobić dzisiaj dzisiaj (ponieważ IIS 7.5 dziwnie nie obsługuje uwierzytelniania na niczym innym niż konta użytkowników Windows lub AD!) ...

Oto cały kod

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

Udokumentowałem to nieco lepiej tutaj: http://nbevans.wordpress.com/2011/03/03/cultural-learnings-of-ha-proxy-for-make-benefit/

nbevans
źródło
2
+1 Chciałem tylko dodać, że możesz również dodać ostatnie wiersze w frontenddefinicji, a nie backendjeśli chcesz. A realm xxxxczęść jest opcjonalna.
UpTheCreek
Zaimplementowałem to, ale tak się dzieje, że przy każdym kolejnym wywołaniu interfejsu API pojawia się okienko z prośbą o uwierzytelnienie. Czy w każdym razie jest to raz pytane, a następnie buforowane dla pozostałych połączeń? To byłoby bardzo pomocne.
shshnk,
2

Myślę, że jest to faktycznie możliwe, ale w tej chwili mogę znaleźć tylko przykład, który doprowadzi cię do połowy ...

http://haproxy.1wt.eu/download/1.4/doc/configuration.txt to twoja Biblia.

Sprawdź sekcję 3.4 (listy użytkowników)

Zaczyna się:

Możliwe jest kontrolowanie dostępu do sekcji frontend / backend / Listen lub statystyk HTTP, zezwalając tylko uwierzytelnionym i autoryzowanym użytkownikom. Aby to zrobić, konieczne jest utworzenie co najmniej jednej listy użytkowników i zdefiniowanie użytkowników.

W tej sekcji wyjaśniono, jak skonfigurować listę użytkowników. Przykład w tej sekcji jest dość wyczerpujący, więc skopiuj go, jeśli zajdzie taka potrzeba.

Następnie musisz dowiedzieć się, jak go zastosować ... Myślę, że odpowiedź leży w sekcji 7.5.3 (Dopasowywanie w warstwie 7)

Myślę, że może to być tak proste, jak użycie następującego polecenia w pliku 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.

Znów go nie testowałem, ale przeczytałem dokumentację, ponieważ sugerowanie jest możliwe.

Mam nadzieję, że to wystarczy, aby zacząć?

Drogie
źródło
Dobry krzyk, chyba już się do tego przyzwyczaiłem!
Drogi
Chociaż patrząc na to jeszcze raz, wydaje się, że nie był aktualizowany od miesięcy ... Nie sprawdziłem konkretnych zmian między tym a ścianą tekstu, ale zakładam, że jest kilka.
Drogi
1
Ten „lepszy” link biblijny to 404 ”. Jeszcze lepiej byłoby haproxy.org/#docs . Znajdziesz tam manualne gadżety HTML / tekst.
Glenn Plas,
Linki do podręczników: cbonte.github.io/haproxy-dconv .
slm