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 der userlist shopware
  • die ACL ip_whitelist nicht zutrifft, hier: Quell-IP 1.2.3.4 , 2.3.4.5 oder 3.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 der userlist shopware
  • die ACL ip_whitelist nicht zutrifft, hier: Quell-IP 1.2.3.4 , 2.3.4.5 oder 3.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/