Ich frage mich, was der beste Weg, um HTTPS-Authentifizierung zu erzwingen ist.Wie erzwinge ich HTTPS in einem Verzeichnis UND erzwinge HTTPS-Authentifizierung
Wenn ich dies in meinem .htaccess-Datei:
AuthType Basic
AuthName "Developer"
AuthUserFile /usr/local/etc/apache22/passwords/passwords
Require user david
Authentifizierung funktioniert, aber es authentifiziert über Port 80, das Passwort im Klartext sendet.
Also dachte ich, ich würde eine Redirect-Regel hinzufügen, alle Nicht-HTTPS-Anfragen auf äquivalente HTTPS-Anfragen zu umleiten:
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteBase /~david/
RewriteRule ^(.*)$ https://myserver.tld/~david/$1 [R,L]
Dies funktioniert auch, aber es erstes authenicates auf Port 80, dann leitet, dann authenicates wieder an Port 443. Ich möchte mich NICHT an Port 80 authentifizieren, da das Passwort im Klartext gesendet wird. Ich war nicht in der Lage, eine gute Möglichkeit zu finden, sofort zu HTTPS umzuleiten und dann zu authentifizieren.
Der einzige Weg, ich meine, könnte, wie dies zu tun ist, indem Sie diese:
AuthType Basic
AuthName "Developer"
AuthUserFile /usr/local/etc/apache22/passwords/passwords
Require user david
ErrorDocument 403 /403.php
SSLRequireSSL
Und ein 403.php PHP-Skript, auf dem/von meinem Server:
<?php
header('Location: https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']);
?>
Dies ist das gewünschte Verhalten. Es erfordert SSL. Wenn Sie also versuchen, auf Port 80 zuzugreifen, wird ein benutzerdefiniertes Fehlerdokument ausgegeben, und dieses Dokument leitet die Seite an HTTPS weiter.
Dies scheint wie ein Klud. Gibt es einen besseren Weg, dies zu erreichen?
Ich denke, du hast es richtig gemacht. Das ist der beste Weg. – bmb