HAProxy: frontend http_auth und backend web application auth

Einrichten des lokalen Netzes, Verbindung zu anderen Computern und Diensten.
Antworten
Benutzeravatar
McAldo
Moderator
Beiträge: 2044
Registriert: 26.11.2003 11:43:36
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Terra / Sol-System / Milchstraße

HAProxy: frontend http_auth und backend web application auth

Beitrag von McAldo » 15.09.2020 16:41:06

Ich habe einen HAProxy Server aufgesetzt, der einen Web-Dienst im internen Netz nach außen zur Verfügung stellen soll. Dabei soll es ein http-auth am HAProxy geben, um den Dienst an dieser Stelle abzusichern. Die eigentliche Anmeldung für die User erfolgt dann am Dienst selber. Für http-auth steht allen Benutzern (aktuell 2 :-) ) der selbe Benutzername und Passwort zur Verfügung.

Das Backendsystem ist ein Davical-Server. Ich baue damit einen eigenen Kalender auf. Es könnte aber auch jeder andere Webservice sein mit eigener Benutzerverwaltung.

Fehlerbeschreibung:
Wenn ich mich am Dienst anmelden möchte mit der öffentlichen Adresse, die am Interface ankommt, auf dem HAProxy lauscht (Beispiel: https://calserver.example.org), dann wird als erstes nach dem Benutzername und Passwort gefragt, welches http_auth vom HAProxy erwartet (siehe Userlist "calendarauth").
Danach wird nach dem eigentlichen Benutzername und Passwort auf dem Backendserver gefragt. Alle weiteren requests enthalten dann den http_auth Benutzername (unser-zugang).

Ich benötige also den Konfigurationsparameter, der es ermöglicht, dass nach erfolgtem http_auth am HAProxy, nur noch die gewünschten Daten durch den Proxy zu senden. Die Verbindung zum HAProxy erfolgt per https. Aus dem Proxy zum Backend auch wieder https.

Die entsprechenden Stellen in der haproxy.conf sehen so aus:

Code: Alles auswählen

userlist calendarauth
    user unser-zugang password $6$123AJggM.Yuuuu111BBfff423tg.235
    
#------------------
# frontend instances
#------------------
frontend calserver.example.org
    bind        x.x.x.x:443 ssl crt /etc/haproxy/ssl/
    acl calendar-auth http_auth(calendarauth)
    reqadd      X-Forwarded-Proto:\ https
    redirect    scheme https if !{ ssl_fc }
    http-request auth realm calendar unless calendar-auth
    default_backend calendar_backend

#------------------
# backend instances
#------------------
backend calendar_backend
    option http-server-close
    option httpclose
    option forwardfor  except 127.0.0.0/8
    redirect scheme https if !{ ssl_fc }
    server calendar 192.168.55.55 ssl verify none
Was fehlt hier? Ich finde leider nicht die richtige Doku zu dieser Sache.
Achte auf deine Gedanken, denn sie werden Worte.
Achte auf deine Worte, denn sie werden Handlungen.
Achte auf deine Handlungen, denn sie werden Gewohnheiten.
Achte auf deine Gewohnheiten, denn sie werden dein Charakter.
Achte auf deinen Charakter, denn er wird dein Schicksal.
(Talmud)

Antworten