In 3 Schritten mit HAProxy zur einfachen Basic Auth abgesicherten WildFly Anwendung auf einer Amazon Linux AMI

Markus Kühle
coodoo
Published in
2 min readJun 2, 2017

--

Wir haben für eines unserer Projekte eine Testumgebung in AWS erstellt, die über eine eigene Domain aufrufbar ist und ein ähnliches Routing wie unsere Live Maschine besitzt aber nicht für die Öffentlichkeit zugänglich sein soll. Hier eine kleine Quick and Dirty Anleitung die Dev Domain mit Basic Auth abzusichern.

Unser Projekt wird als Java EE Anwendung auf einen WildFly deployt, der in unserer Testumgebung auf Port 8080 läuft. Das Routing über AWS Route 53 und einem Load Balancer mappt dabei Port 80 auf 8080.

Dieses Routing sowie die Absicherung mit Basic Auth soll ab sofort der HAProxy direkt auf der DEV Maschine durchführen:

1. Installation HAProxy auf dem Amazon Linux AMI

Installieren der Software über yum:

sudo yum check-update
sudo yum update
sudo yum install — enablerepo=epel haproxy
sudo chown ec2-user:ec2-user /etc/haproxy/haproxy.cfg

Starten und Stoppen des Service:

sudo service haproxy start
sudo service haproxy stop

2. Konfiguration des WildFly Backends in der haproxy.cfg

Der WildFly läuft bei uns auf dem Standardport 8080. Der Proxy soll somit von Port 80 auf 8080 durchleiten:

frontend public
bind *:80
default_backend wildfly

backend wildfly
timeout server 30s
server proxy1 127.0.0.1:8080

3. Basic Auth konfigurieren

Die einfachste Variante Basic Auth im HAProxy zu verwenden ist acl mit http_auth() und einer userlist zu verwenden. Die Userlist definiert einen User mit Namen “ligahero” und das Passwort als plain Text durch die Angabe von “insecure-password”. In der “backend wildfly” config wird anschließend auf diese User geprüft:

userlist LigaHeroDevUsers
group LigaHeroGroup users ligahero
user ligahero insecure-password meinPasswort

frontend public
bind *:80
default_backend wildfly

backend wildfly
timeout server 30s
server proxy1 127.0.0.1:8080
acl authOk http_auth(LigaHeroUsers)
http-request auth realm MyAuthRealm if !authOk

Anschließend den haproxy Service neu starten und basic auth ist vorhanden.

Selbstverständlich muss man die Passwörter verschlüsseln und kann auch noch ein oder zwei Dinge exakter durchführen aber für eine schnelle Absicherung ist das der einfachste Weg.

--

--