Ist es möglich, eine grundlegende HTTP-Zugriffsauthentifizierung über HAProxy hinzuzufügen?

25

Ich habe HAProxy erfolgreich vor einem HTTP-Server eingerichtet, über den ich keine Kontrolle habe .

Ist es möglich, HAProxy so zu konfigurieren , dass allen Sites eine einfache HTTP-Authentifizierung hinzugefügt wird , wobei zu beachten ist, dass ich dies im Backend nicht konfigurieren kann?

Vielen Dank,

Lars

Lars Schneider
quelle

Antworten:

36

Ich musste das heute selbst tun (weil IIS 7.5 die Authentifizierung nur für Windows-Benutzerkonten oder AD unterstützt!) ...

Hier ist der ganze Code

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

Ich habe es hier etwas besser dokumentiert: http://nbevans.wordpress.com/2011/03/03/cultural-learnings-of-ha-proxy-for-make-benefit/

nbevans
quelle
2
+1 Ich wollte nur hinzufügen, dass Sie auch die letzten Zeilen in einer frontendDefinition hinzufügen können, anstatt backendwenn Sie möchten. Und das realm xxxxTeil ist optional.
UpTheCreek
Ich habe dies implementiert, aber was passiert ist, dass ich bei jedem nachfolgenden API-Aufruf das Popup erhalte, das nach Authentifizierung fragt. Dies macht es unbrauchbar. Gibt es sowieso eine Stelle, an der es einmal abgefragt und dann für den Rest der Anrufe zwischengespeichert wird? Das wäre sehr hilfreich.
Shshnk
2

Ich denke, das ist tatsächlich möglich, aber im Moment kann ich nur ein Beispiel finden, um Sie auf halbem Weg zu erreichen ...

http://haproxy.1wt.eu/download/1.4/doc/configuration.txt ist deine Bibel.

Check out Abschnitt 3.4 (Benutzerlisten)

Es beginnt:

Es ist möglich, den Zugriff auf Frontend- / Backend- / Listen-Bereiche oder auf http-Statistiken zu steuern, indem nur authentifizierte und autorisierte Benutzer zugelassen werden. Dazu ist es erforderlich, mindestens eine Benutzerliste anzulegen und Benutzer zu definieren.

In diesem Abschnitt wird erläutert, wie Sie eine Benutzerliste einrichten. Das Beispiel in diesem Abschnitt ist ziemlich vollständig. Kopieren Sie es, wenn Sie es brauchen.

Als nächstes muss man herausfinden, wie man es anwendet ... Ich denke, die Antwort liegt in Abschnitt 7.5.3 (Matching auf Layer 7).

Ich denke, es könnte so einfach sein, wie das Folgende in einer Acl zu verwenden:

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.

Auch hier habe ich es noch nicht getestet, aber genau das habe ich in der Dokumentation gelesen, da ein Vorschlag möglich ist.

Ich hoffe, das ist genug, um Ihnen den Einstieg zu erleichtern.

Teuer
quelle
Guter Schrei, ich glaube, ich bin es gerade gewöhnt!
Teuer
Obwohl ich es mir noch einmal ansehe, scheint es seit Monaten nicht mehr aktualisiert worden zu sein ... Ich habe nicht nach spezifischen Änderungen zwischen dem und der Textwand gesucht, gehe aber davon aus, dass es einige gibt.
Teuer
1
Diese 'bessere' Bibelverbindung ist 404'ing. Noch besser wäre dieses haproxy.org/#docs . Dort finden Sie HTML / Text Manual Goodies.
Glenn Plas
Links zum Aufrufen der Handbücher: cbonte.github.io/haproxy-dconv .
Slm