Passwortschutz mit .htaccess auch für Websocket

Irgendwelche Probleme mit XAMPP für Windows? Dann ist hier genau der richtige Ort um nachzufragen.

Passwortschutz mit .htaccess auch für Websocket

Postby fpdragon » 17. December 2019 14:19

Hallo,

Ich habe einen VirtualHost laufen der einerseits auf die Files unter "W:/www" zugreift und andererseits die Websocket-Kommunikation ws:// zu einer Serverapplikation weiterleitet.

Code: Select all
<VirtualHost *:80>
    ServerName my.server.com

    RewriteEngine On

    # When Upgrade:websocket header is present, redirect to ws
    # Using NC flag (case-insensitive) as some browsers will pass Websocket
    RewriteCond %{HTTP:Upgrade} =websocket [NC]
    RewriteRule ^/(.*)    ws://localhost:8181/$1 [P,L]

    # All other requests go to http
    DocumentRoot "W:/www"
   
    <Directory "W:/www">
        Options All
        AllowOverride All
        Require all granted 
    </Directory>
</VirtualHost>


Wenn man jetzt mal davon absieht, dass die Verbindung noch nicht gesichert ist (anderer Post)...
Die eigentliche Website konnte ich leicht Passwortschützen mit Hilfe von .htaccess Files.
Nachdem ich jetzt aber ein wenig drüber nachgedacht habe, bin ich zu dem Schluss gekommen, dass die Websocket Verbindung damit aber noch nicht Passwortgeschützt sein dürfte. Sprich wenn jemand die Websocket URL kennen würde (zB: ws://my.server.com) dann müsste es auch möglich sein, dass er oder sie direkt, ohne den entsprechenden html und js Files zugreift, ohne ein Passwort kennen zu müssen.

Gibt es eine Möglichkeit, dass man den Websocket so konfiguriert, dass eine Verbindung nur zugelassen wird wenn bei der entsprechenden Website auch das richtige Passwort eingegeben wurde?
Wie werden üblicherweise solche Anmeldevorgänge abgehandelt, dass Websocket wirklich nur dann funzt wenn das Passwort auch gestimmt hat?
Kann man das eingegebene Passwort in Javascript in kodierter Form über den Websocket übertragen und dann in der Server Application mit dem im .htpasswd File vergleichen? Oder lässt sich der Passwortschutz irgendwie einfacher mit dem Websocket verknüpfen?

Danke!
fpdragon
 
Posts: 7
Joined: 17. December 2019 13:48
XAMPP version: 7.3.12
Operating System: Windows 10 Pro

Re: Passwortschutz mit .htaccess auch für Websocket

Postby Nobbie » 17. December 2019 14:46

Grob drauflos geraten würde ich versuchen, die Abfragebedingen einfach in den VirtualHost zu schreiben. Statt in die .htaccess zu schreiben (die gilt immer nur für ein Verzeichnis) gleich für den ganzen VirtualHost aktivieren.

P.S.: Beim zweiten Lesen verstehe ich erst, dass Du die Anwendung selbst schützen willst. Keine Ahnung, die kennt hier kein Mensch. Was verbirgt sich denn hinter ws://localhost:8181? Wird so ein Request überhaupt von Apache beantwortet? Und wieso glaubst Du, dass ws://my.server.com eine gültige URL ist? In Deinem Scenario oben ist die URL mit localhost verknüpft (ws://localhost:8181), die kann man nicht von außen erreichen.
Nobbie
 
Posts: 13181
Joined: 09. March 2008 13:04

Re: Passwortschutz mit .htaccess auch für Websocket

Postby fpdragon » 17. December 2019 16:35

Hi Nobbie,

Danke für deine Antwort.

Naja, vl hab ich das nicht ganz klar beschrieben. Ich will nicht nur die Anwendung selbst schützen. Im Prinzip möchte ich einfach nur verhindern, dass jemand ohne Passwort den Websocket öffnen kann. Die Anwendung die auf ws://localhost:8181 lauscht sollte da eigentlich nicht relevant sein.

Ich dachte mir nur. Im Notfall kann man vl das Passwort kodiert über den Websocket übertragen und dann könnte meine Applikation vl validieren und erst ab dann aktiv werden wenn... Aber war nur so eine Idee. Eigentlich denke ich müsste es da eh eine Elegantere Lösung geben direkt in Apache.

Der Tipp, den Passwortschutz auf VirtualHost Ebene zu konfigurieren ist vl hilfreich.
Muss ich mal herausfinden wie das geht. Ich wusste bisher nicht dass man auf dieser Ebene einen Passwortschutz konfigurieren kann.
Sprich, gefragt wird man dann einmalig beim Seitenaufruf aber der Schutz betrifft dann die Website und den Socket. So wäre es genial.

Danke.
fpdragon
 
Posts: 7
Joined: 17. December 2019 13:48
XAMPP version: 7.3.12
Operating System: Windows 10 Pro

Re: Passwortschutz mit .htaccess auch für Websocket

Postby nemesis » 18. December 2019 03:59

Hallo fpdragon,

zur .htacess http://httpd.apache.org/docs/current/howto/htaccess.html
Je nachdem wie weit du etwas absichern willst, gibt es einige Möglichkeiten beim Apache Webserver.
http://httpd.apache.org/docs/current/howto/access.html#rewrite z.B. auch das Einschränken des Zugriffs auf bestimmte Uhrzeiten.
Falls du deine Benutzer in einem Verzeichnis hast und du es verwenden kannst: http://httpd.apache.org/docs/current/mod/mod_authnz_ldap.html
Unter Windows nennt es sich auch Active Directory, statt einfach nur ldap.
http://httpd.apache.org/docs/current/howto/auth.html#multprovider generell

Extern, mit anderem Betriebssystem als Windows, wird gerne noch https://de.wikipedia.org/wiki/Fail2ban verwendet, um IP-Adressen auch langfristig zu sperren.

Gruß,
Ubuntu 18.04 | SMP P3 1.4 GHz | 6 GByte RegECC | 74 GByte Seagate 15k5 system | 3Ware 9550SXU-4LP with 4x 500 GByte Seagate ES2 Raid 10 data | StoreCase DE400 | PX-230A | Intel Pro/1000MT Dual PCI-X
User avatar
nemesis
AF Moderator
 
Posts: 1044
Joined: 29. December 2002 13:14
Location: Ingolstadt
XAMPP version: depends
Operating System: Linux, BSD, Win, iOS, Android

Re: Passwortschutz mit .htaccess auch für Websocket

Postby fpdragon » 18. December 2019 09:36

Super, danke!
Da werde ich mich mal einlesen und dann sehen zu welcher Lösung ich komme...
fpdragon
 
Posts: 7
Joined: 17. December 2019 13:48
XAMPP version: 7.3.12
Operating System: Windows 10 Pro


Return to XAMPP für Windows

Who is online

Users browsing this forum: No registered users and 62 guests