htaccess Auth + Redirect

Alles, was den Apache betrifft, kann hier besprochen werden.

htaccess Auth + Redirect

Postby Stepke-DSL » 13. January 2010 16:53

Hallo Leute,

Ich stehe gerade vor einem Problem. Es soll ein Login via htaccess realisiert werden und die Seite soll nur per HTTPS erreichbar sein.

Für den Fall, dass ein User per HTTP auf die Seite zugreift, soll er automatisch auf HTTPS umgeleitet werden.
Hier jetzt erstmal meine htaccess aus /htdocs/hierher :
Code: Select all
# HTTPS-Verschluesselung erzwingen
RewriteEngine On

RewriteCond %{SERVER_PORT}     !^443$

# fuer alle Dateien
RewriteRule (.*)  https://%{SERVER_NAME}%{REQUEST_URI}

AuthType Basic
AuthBasicProvider ldap
AuthName "Login"
AuthzLDAPAuthoritative off
AuthLDAPURL ldap://ldapserver:389/dc=hier?uid
Require valid-user


Und hier die .htaccess aus dem Root-Verzeichnis:
Code: Select all
ErrorDocument 401 /errordocs/401.html
ErrorDocument 404 /errordocs/404.html


Das Problem ist, wenn ein User per HTTP auf die Seite zugreift, wird er mit einem 401 HTTP-Fehler konfrontiert (sofort und ohne die Möglichkeit seine Zugangsdaten einzugeben).
Ruft der User die Seite per HTTPS auf, muss er sich anmelden und alles funktioniert prima.
Meine Frage: Wie schaffe ich es, dass der User den 401 nicht bekommt, wenn er die Seite per HTTP aufruft und auf HTTPS umgeleitet wird, um seine Zugangsdaten einzugeben?

Danke schonmal im Voraus!

MfG Stepke
Stepke-DSL
 
Posts: 313
Joined: 12. July 2007 16:08
Operating System: Win XP Pro SP3 + SuSe Linux

Re: htaccess Auth + Redirect

Postby Nobbie » 13. January 2010 18:40

Warum der 401er kommt, kann ich so nicht erkennen, aber diese Form der Umleitung finde ich extrem häßlich.

Ich würde in der httpd.conf (bzw. httpd-vhosts.conf) für den virtuellen Host auf Port 80 einen RedirectPermant einrichten:


Code: Select all
NameVirtualHost *:80
....
<VirtualHost *:80>
ServerName www.blabla.de
RedirectPermanent / https://www.blabla.de
</VirtualHost>


Und in der .htaccess nur die Authorisierung durchführen (oder auch in einen <Directory..> Container legen in httpd.conf).
Nobbie
 
Posts: 13179
Joined: 09. March 2008 13:04

Re: htaccess Auth + Redirect

Postby Stepke-DSL » 14. January 2010 10:03

Hallo Nobbie,

Danke für deine Antwort. Erstaunlicherweise musste ich den kompletten Server (nicht nur XAMPP) neu starten, damit es funktioniert.
Trotzdem habe ich das jetzt so gemacht, wie du vorgeschlagen hast (die Weiterleitung in die httpd.conf).

Jetzt habe ich allerdings das Problem, dass ich mich anmelden muss, wenn ich die Seite per HTTP aufrufe, dann auf HTTPS umgeleitet werde und mich dann erneut anmelden muss.

Gibt es eine Möglichkeit, dass ich umgeleitet werde, ohne mich erst anmelden zu müssen und ich mich erst anmelden muss, wenn ich auf HTTPS umgeleitet wurde?

MfG Stepke
Stepke-DSL
 
Posts: 313
Joined: 12. July 2007 16:08
Operating System: Win XP Pro SP3 + SuSe Linux

Re: htaccess Auth + Redirect

Postby Nobbie » 14. January 2010 13:30

Stepke-DSL wrote:Gibt es eine Möglichkeit, dass ich umgeleitet werde, ohne mich erst anmelden zu müssen und ich mich erst anmelden muss, wenn ich auf HTTPS umgeleitet wurde?


Da würde ich probieren, die ganze .htaccess Geschichte sein zu lassen und die Authorisierung in die Deklaration des VirtualHosts für *:443 für diese Domain zu legen, und dort in den <Directory ...> Abschnitt (den Du sinnvollerweise sowieso dort drin hast, um die Berechtigungen a la "Allow From All" zu definieren), also so ungefähr:

Code: Select all
...
<VirtualHost *.443> # kannst da auch den _default_ Eintrag nehmen, ich kenne Deine Konfiguration sonst nicht
ServerName www.blabla.de
DocumentRoot /var/www/htdocs
<Directory /var/www/htdocs>
Order Allow,Deny
Allow From All
#
# und nun hier die Authorisierung
#
AuthType Basic
AuthBasicProvider ldap
AuthName "Login"
AuthzLDAPAuthoritative off
AuthLDAPURL ldap://ldapserver:389/dc=hier?uid
Require valid-user
</Directory>
#
#... und dann noch das ganze SSL Gedöns, kann natürlich auch vorher stehen, ist egal wo
#
</VirtualHost>
Nobbie
 
Posts: 13179
Joined: 09. March 2008 13:04

Re: htaccess Auth + Redirect

Postby Stepke-DSL » 14. January 2010 14:29

Hallo,

Die Authorisierung kann ich leider nicht in die Config packen, da es Unterordner gibt, die unterschiedliche Berechtigungen benötigen. Hier erstmal die Struktur:
Code: Select all
-htdocs
--Projekt1
--Projekt2
--Projekt3
.
.
.

Jedes Projekt ist nur für unterschiedliche (LDAP-)Gruppen gedacht, also müsste ich, wenn ich das in die Config einbinde, für jedes Projekt einen VHOST anlegen, was ich möglichst vermeiden will, da ja dann jedesmal der Apache neu gestartet werden muss...

Die Authorisierung soll halt als .htaccess in den entsprechenden Ordnern liegen.
Gibt es da eine Möglichkeit, oder ist es über die VHOSTS die einzige Option?

MfG Stepke
Stepke-DSL
 
Posts: 313
Joined: 12. July 2007 16:08
Operating System: Win XP Pro SP3 + SuSe Linux

Re: htaccess Auth + Redirect

Postby Nobbie » 14. January 2010 15:36

Stepke-DSL wrote:Die Authorisierung kann ich leider nicht in die Config packen, da es Unterordner gibt, die unterschiedliche Berechtigungen benötigen. Hier erstmal die Struktur:
Code: Select all
-htdocs
--Projekt1
--Projekt2
--Projekt3
.
.
.

Jedes Projekt ist nur für unterschiedliche (LDAP-)Gruppen gedacht, also müsste ich, wenn ich das in die Config einbinde, für jedes Projekt einen VHOST anlegen, was ich möglichst vermeiden will, da ja dann jedesmal der Apache neu gestartet werden muss...


Wo ist das Problem? Du legst ja nicht vierhundert mal pro Tag ein neues Projekt an.

Stepke-DSL wrote:Die Authorisierung soll halt als .htaccess in den entsprechenden Ordnern liegen.


Ob eine .htaccess in einem Ordner liegt oder die entsprechenden Anweisungen in einem <Directory> Container in der httpd.conf, ist semantisch kein Unterschied.

Stepke-DSL wrote:Gibt es da eine Möglichkeit, oder ist es über die VHOSTS die einzige Option?


Das Grundproblem ist, dass Du für http und https den gleichen DocumentRoot gewählt hast, weswegen die .htaccess doppelt ausgeführt wird. Wenn Du für http und https verschiedene Ordner hast, gibt es zwei verschiedene .htaccess (einmal den Redirect, und die andere .htaccess macht die Authorisierung). Das wäre auch noch einfach machbar.
Nobbie
 
Posts: 13179
Joined: 09. March 2008 13:04

Re: htaccess Auth + Redirect

Postby Stepke-DSL » 14. January 2010 16:19

Nun gut, dann muss ich halt unterschiedliche Documentroots nehmen.

Danke für deine Hilfe!!!
Stepke-DSL
 
Posts: 313
Joined: 12. July 2007 16:08
Operating System: Win XP Pro SP3 + SuSe Linux


Return to Apache

Who is online

Users browsing this forum: No registered users and 46 guests