2016-10-06 6 views
0

Ich verwende derzeit HAProxy http-request auth Operation, um den Zugriff auf Ressourcen bedingt zu beschränken. Ich möchte fortfahren, den Benutzernamen, der mit einer erfolgreichen Autorisierung verbunden ist, zu den Headern der Anfrage hinzuzufügen, die an das Backend übergeben werden und die Apache-Umgebungsvariable HTTP_AUTH_USER emulieren.HAProxy get Benutzername mit Basic Auth zugeordnet

Ich bin in der Lage, die Gruppe mit der Operation über http_auth_group verbunden zu bekommen, aber würde lieber den Benutzernamen haben.

Ich schätze, ich könnte diese Operation auf die Webserver verschieben, aber ich würde lieber nicht eine kleine Anzahl von Benutzernamen und Passwörter auf 10s von Maschinen verwalten, wenn ich es an 2 Stellen über den Proxy tun kann.

+1

Die ['http_auth_group'fetch] (http://cbonte.github.io/haproxy-dconv/1.6/configuration.html#7.3.6-http_auth_group) verwendet die Gruppe als Argument. Laut der Dokumentation wird der Benutzername zurückgegeben. Haben Sie versucht, diesen Abruf in Verbindung mit 'http-request set-header' zu verwenden? –

+0

Michael, 'http-Anfrage add-header X-Benutzername% [http_auth_group (GROUP_NAME)]' scheint den Trick gemacht zu haben. Vielen Dank! – glennstar

Antwort

2

Die http_auth_group layer 7 sample fetch ist ein wenig verwirrend auf den ersten Blick benannt, mit dem Wort "Gruppe" erscheint darin, impliziert, dass es die Gruppe zurückgibt. Tatsächlich nimmt es die Gruppe als Argument und gibt keinen Wert zurück, es sei denn, die Anfrage wurde mit den Anmeldeinformationen eines Mitglieds der angegebenen Gruppe authentifiziert ... in diesem Fall gibt es den Benutzernamen zurück.

So hat es zwei Zwecke: Testen seiner Wahrheit, um festzustellen, ob irgendein Mitglied der Gruppe die Anfrage authentifiziert hat oder den Benutzernamen extrahiert hat. So ...

http-request set-header X-Username %[http_auth_group(GROUP_NAME)] 

... wird entfernen jede X-Username: Header (Groß- und Kleinschreibung) in der eingehenden Anforderung (falls bereits vorhanden) und füllen Sie eine neue X-Usernane: Header mit dem Benutzernamen des authentifizierten Benutzers, oder sonst ein leerer Wert (wenn Ihre Konfiguration anonyme Anfragen zulässt).

Es ist wichtig, set-header, verwenden nichtadd-header, weil der Header hinzugefügt wird jeden passenden Header in der eingehenden Anforderung nicht entfernen, was ein Sicherheitsrisiko darstellt. Immer eingestellt, wenn Sie nicht einen bestimmten Grund hinzufügen müssen.

+0

Ich habe einen "del-header" in der Konfiguration im Moment, da es einige andere Routen (Haupt-IP-Adressen) gibt, über die der Verkehr ankommen kann und das Backend entsprechend verschiedene Aktionen ausführt. Up-Vote jedoch, wie Sie einen ausgezeichneten Punkt über die Sicherheitsrisiken machen. – glennstar