Basis-Authentifizierung - Shopware 6
In diesem Artikel erfahren Sie, wie Sie Ihre Shopware 6 Instanz mit einer HTTP-Basis-Authentifizierung schützen können, sofern Sie HaProxy als Load Balancer einsetzen.
Voraussetzungen
- Managed oder Unmanaged HaProxy Server
- Zugriff auf das creoline Konfigurationsdateien-Modul (Managed) oder SSH Root (Unmanaged)
- Shopware 6 Installation (als konfiguriertes Backend)
Allgemeine Konfiguration
Für den Schutz des Sales Channels oder der Administration muss zunächst eine neue Section für die Liste der Benutzer implementiert werden.
# Userlist
userlist shopware
user creoline insecure-password "unencrypted-password"
Sales Channel & Administration
Im nächsten Schritt muss die Basis-Authentifizerung im HaProxy Frontend
implementiert werden. Hierbei ist zu beachten, dass Shopware in der Administration den Authorization
Header für die API-Anfragen verwendet und die API daher nicht zusätzlich mit einer Basis-Authentifizierung geschützt werden kann.
# Frontend
frontend http_frontend
# [...]
# Disable Basic auth on API routes for JWT token exchange inside Authorization header
acl uri_shopware_api path_beg /api /store-api /product-api
# Apply Basic Auth
acl authenticated http_auth(shopware)
acl ip_whitelist src 1.2.3.4 2.3.4.5 3.4.5.6
http-request auth if !uri_shopware_api !authenticated !ip_whitelist
In diesem Beispiel wird die HTTP-Basis-Authentifizierung angezeigt, sofern:
- die ACL
uri_shopware_api
nicht zutrifft, hier:/api /store-api /product-api
- die ACL
authenticated
nicht zutrifft, hier: kein Login deruserlist
shopware - die ACL
ip_whitelist
nicht zutrifft, hier: Quell-IP1.2.3.4
,2.3.4.5
oder3.4.5.6
Administration
Neben dem gesamten Schutz der Shopware-Instanz kann alternativ auch nur die Shopware Administration mit einer Basis-Authentifizierung geschützt werden. Hierbei ist zu beachten, dass Shopware in der Administration den Authorization
Header für die API-Anfragen verwendet und die API daher nicht zusätzlich mit einer Basis-Authentifizierung geschützt werden kann.
# Frontend
frontend http_frontend
# [...]
# Protected URIs
acl uri_shopware_admin path_beg /admin
# Disable Basic auth on API routes for JWT token exchange inside Authorization header
acl uri_shopware_api path_beg /api /store-api /product-api
# Apply Basic Auth
acl authenticated http_auth(shopware)
acl ip_whitelist src 1.2.3.4 2.3.4.5 3.4.5.6
http-request auth if uri_shopware_admin !uri_shopware_api !authenticated !ip_whitelist
In diesem Beispiel wird die HTTP-Basis-Authentifizierung angezeigt, sofern:
- die ACL
uri_shopware_admin
zutrifft, hier:/admin
- die ACL
uri_shopware_api
nicht zutrifft, hier:/api /store-api /product-api
- die ACL
authenticated
nicht zutrifft, hier: kein Login deruserlist
shopware - die ACL
ip_whitelist
nicht zutrifft, hier: Quell-IP1.2.3.4
,2.3.4.5
oder3.4.5.6
Einsatz von Cloudflare
Sofern Sie Shopware via HaProxy mit Cloudflare schützen (Reverse-Proxy), sind zusätzliche Anpassungen an der ACL ip_whitelist
erforderlich, da HTTP-Anfragen in diesem Fall von Cloudflare und nicht mehr von dem tatsächlichen Client an HaProxy gesendet werden. Cloudflare übermittelt die tatsächliche IP-Adresse in dem HTTP-Header Cf-Connecting-Ip
.
Die korrekte ACL für die ip_whitelist
muss in diesem Fall wie folgt angepasst werden:
acl ip_whitelist hdr(Cf-Connecting-Ip) 1.2.3.4 2.3.4.5 3.4.5.6
Bitte stellen Sie sicher, dass die Einstellung Authenticated Origin Pull aktiviert ist, da andernfalls mithilfe von Header-Spoofing die Basis-Authentifizierung umgangen werden kann, sofern HTTP-Anfragen direkt zu der HaProxy-Instanz gesendet werden.
Mehr Informationen: https://developers.cloudflare.com/ssl/origin-configuration/authenticated-origin-pull/