Kai Diefenbach: .htaccess

Hallo allerseits,

folgenden Aufgabe wuerde ich gerne loesen.

User betritt Homepage und wird zur Eingabe von UserID / Passwort aufgefordert.
Aufgrund des UserID, wird er auf ein bestimmtes Verzeichnis geroutet, dass nur er betreten darf.
Betritt er das Unterverzeichnis direkt, soll der User auch zu Login aufgefordert werden.

Folgendes habe ich ausprobiert.

.htaccess - Datei im root Verzeichnis, alle User duerfen sich einloggen.

AuthType Basic
   AuthName private
   AuthUserFile /homepages/36/d19949374/htdocs/kdiefenbach/cgi-  
   bin/.htpasswd
   require user mueller meier

.htaccess - Datei in Unterverzeichnise mueller / meier, nur best. User darf sich einloggen, z.B.

AuthType Basic
   AuthName private
   AuthUserFile /homepages/36/d19949374/htdocs/kdiefenbach/cgi-  
   bin/.htpasswd
   require user mueller

Nach Login im root-Verzeichnis, wird kleines Perlscript ausgefuehrt um User umzurouten.

#!/usr/bin/perl
   print "Location: http://www.dom1.de/$ENV{REMOTE_USER}/\n\n";

Hier muss sich der User _zweimal_ anmelden um Zugriff auf sein privates Unterverzeichnis zu bekommen.
Ist es moeglich, dies zu umgehen, also die eben eingegeben Userdaten im root, in die entsprechenden Unterverzeichnis durchzureichen.
Und wenn nicht, kann man etwas anderes tun, um diese Verhalten umzusetzen ?

Vielen Dank
   Kai

  1. Hallo allerseits,

    folgenden Aufgabe wuerde ich gerne loesen.

    User betritt Homepage und wird zur Eingabe von UserID / Passwort aufgefordert.
    Aufgrund des UserID, wird er auf ein bestimmtes Verzeichnis geroutet, dass nur er betreten darf.
    Betritt er das Unterverzeichnis direkt, soll der User auch zu Login aufgefordert werden.

    Folgendes habe ich ausprobiert.

    .htaccess - Datei im root Verzeichnis, alle User duerfen sich einloggen.

    AuthType Basic
       AuthName private
       AuthUserFile /homepages/36/d19949374/htdocs/kdiefenbach/cgi-  
       bin/.htpasswd
       require user mueller meier

    .htaccess - Datei in Unterverzeichnise mueller / meier, nur best. User darf sich einloggen, z.B.

    AuthType Basic
       AuthName private
       AuthUserFile /homepages/36/d19949374/htdocs/kdiefenbach/cgi-  
       bin/.htpasswd
       require user mueller

    Nach Login im root-Verzeichnis, wird kleines Perlscript ausgefuehrt um User umzurouten.

    #!/usr/bin/perl
       print "Location: http://www.dom1.de/$ENV{REMOTE_USER}/\n\n";

    Hier muss sich der User _zweimal_ anmelden um Zugriff auf sein privates Unterverzeichnis zu bekommen.
    Ist es moeglich, dies zu umgehen, also die eben eingegeben Userdaten im root, in die entsprechenden Unterverzeichnis durchzureichen.
    Und wenn nicht, kann man etwas anderes tun, um diese Verhalten umzusetzen ?

    Vielen Dank
       Kai

  2. Hi,

    Nach Login im root-Verzeichnis, wird kleines Perlscript ausgefuehrt um User umzurouten.

    vielleicht läßt sich das über mod_rewrite geschickter lösen... Stichwort RewriteCond, s. http://www.apache.org/docs/mod/mod_rewrite.html.

    Cheatah, so früh am Morgen nur Ansätze liefernd :-)

  3. Hi,

    Hier muss sich der User _zweimal_ anmelden um Zugriff auf sein privates Unterverzeichnis zu bekommen.
    Ist es moeglich, dies zu umgehen, also die eben eingegeben Userdaten im root, in die entsprechenden Unterverzeichnis durchzureichen.
    Und wenn nicht, kann man etwas anderes tun, um diese Verhalten umzusetzen ?

    Auch wenn Du zweimal denselben AuthName verwendest (was ich noch nie ausprobiert hatte, weil es mir unsinnig erscheinen würde), scheint der Webserver zu merken, daß Du zwei unterschiedliche Definitionen verwendest. (Möglicherweise erkennt er das an den URLs der .htaccess-Definitionsdateien.)
    In diesen *könntest* Du zwei unterschiedliche Benutzer-Definitionen verwenden, und deshalb scheint der Webserver Deine Benutzer zweimal authentifizieren zu wollen.

    Im "äußeren" Login würde ich an Deiner Stelle statt .htaccess einfach nur ein Formulareingabefeld für den Benutzernamen (und *kein* Kennwort!) anbieten und basierend auf diesem das Forwarding durchführen, welches dann für das "innere" login die Server-Authentifizierung auslöst. (An dieser Stelle kannst Du prüfen, ob es das Ziel-Verzeichnis gibt, um einen eventuellen Fehler beim Forwarding präventiv abzufangen - ggf. mit bewußter Verzögerung um einige Sekunden, um das durchprobieren von Benutzernamen zu erschweren.)

    Dein Szenario ist übrigens ein Fall, in dem der Benutzer m. E. damit einverstanden wäre, wenn Du seinen Namen in einem Cookie ablegst und dadurch beim nächsten Anmeldungsvorgang den ersten Schritt entweder überspringen oder wenigstens das Eingabefeld entsprechend vorbelegen kannst. Hier wäre der Cookie ausnahmsweise mal sinnvoll eingesetzt.
    (Aus Sicherheitsgründen würde ich dasselbe *nicht* mit dem Passwort tun.)

    mfG - Michael