Frank Scharffenberg: Authentifikations-Dialog starten?

Hallo Forumer!

<Freude>
Oh happy day! Das Forum ist wieder offen! Und Dank und Lob an Stefan und die anderen Beteiligten für das neue Portal!
</Freude>

<Problem>
Und schon ist wieder ein Problem zu lösen:
Ich möcht mittels CGI-Script (perl) den Browser auffordern, den Authentifikations-Dialog (wie bei Zugriffen auf Dateien mit .htaccess im Verzeichnis) anzuzeigen. Das geht mit 'print "Status: 401\n";'. Ab hier gibts die Schwierigkeiten. Werden die Felder ausgefüllt und abgeschickt, wo landen diese Werte dann? Mir ist nicht klar, was der Server mit den Daten tut: nichts? Oder sucht er im aktuellen Verzeichnis eine .htaccess und daraus dann die per AuthFile angegebene Passwortdatei, um Username/Passwort zu validieren?
</Problem>

Viele Dank schonmal für die Antworten,
Gruß Frank

  1. Hallo Forumer!
    Ich möcht mittels CGI-Script (perl) den Browser auffordern, den Authentifikations-Dialog (wie bei Zugriffen auf Dateien mit .htaccess im Verzeichnis) anzuzeigen. Das geht mit 'print "Status: 401\n";'. Ab hier gibts die Schwierigkeiten. Werden die Felder ausgefüllt und abgeschickt, wo landen diese Werte dann? Mir ist nicht klar, was der Server mit den Daten tut: nichts? Oder sucht er im aktuellen Verzeichnis eine .htaccess und daraus dann die per AuthFile angegebene Passwortdatei, um Username/Passwort zu validieren?

    Ja das mit der Authentifikation ist schon ne lustige Sache. Theoretisch passiert genau das was du gesagt hast, der Server sucht nach der .htaccess und gleicht die Daten ab. Wenn sie passen gehts weiter *, wenn nicht, dann gibts die Access Denied Seite mit dem schicken Layout.

    * er...wohin geht es eigentlich weiter?
    Das fine ich an deinem Lösungsansatz etwas merkwürdig, du triggerst mit deinem Script die Authetifizierung, aber irgendwie gibt es kein Ziel.
    Ich würde es einfach nur mit einem print "Location: ..." versuchen, wobei hinter Location die geschützte Datei steckt. Der Server übernimmt dann die Authentifizierung wenn jemand versucht die Grenze zu überqueren, und sich noch nicht eingeloggt hat.

    Gruß
    Cruz

    1. Hallo Cruz!

      * er...wohin geht es eigentlich weiter?
      Das fine ich an deinem Lösungsansatz etwas merkwürdig, du triggerst mit deinem Script
      die Authetifizierung, aber irgendwie gibt es kein Ziel.
      Ich würde es einfach nur mit einem print "Location: ..." versuchen, wobei hinter Location
      die geschützte Datei steckt. Der Server übernimmt dann die Authentifizierung wenn jemand
      versucht die Grenze zu überqueren, und sich noch nicht eingeloggt hat.

      Das Problem ist folgendes: Die CGI's und die HTML's liegen auf 2 verschiedenen Maschinen beim selben Provider (der baut seine Server gerade um). Auf dem CGI-Server geht kein .htaccess im üblichen Sinne (automatischer Start des Authentifizierungs-Dialoges bei Zugriff auf Verzeichnis mit .htaccess). Das geht nur auf dem "HTML-Server". Ich kann natürlich dort einen Bereich mit .htaccess schützen und von da aus mein schützenswertes CGI aufrufen. Dann aber ist REMOTE_USER leer (Das Problem wurde hier schon mal diskutiert). Ich brauche aber in meinem Script diese Angabe. Und da hatte ich eben die Idee, den Dialog per Script zu starten und in das CGI-Verzeichnis eine .htaccess zu legen ;-) . Das ganze steckt noch in einer frühen Analysephase und wie es nach dem Dialog weiter geht, weiß ich noch nicht. Vielleicht realisiere ich die Benutzerauthentifikation auch mittels eigenem Script...

      Vielen Dank für Deine Antwort, ich werde damit experimentieren.

      Gruß Frank

      1. Das Problem ist folgendes: Die CGI's und die HTML's liegen auf 2 verschiedenen Maschinen beim selben Provider (der baut seine Server gerade um). Auf dem CGI-Server geht kein .htaccess im üblichen Sinne (automatischer Start des Authentifizierungs-Dialoges bei Zugriff auf Verzeichnis mit .htaccess). Das geht nur auf dem "HTML-Server". Ich kann natürlich dort einen Bereich mit .htaccess schützen und von da aus mein schützenswertes CGI aufrufen. Dann aber ist REMOTE_USER leer (Das Problem wurde hier schon mal diskutiert). Ich brauche aber in meinem Script diese Angabe. Und da hatte ich eben die Idee, den Dialog per Script zu starten und in das CGI-Verzeichnis eine .htaccess zu legen ;-) . Das ganze steckt noch in einer frühen Analysephase und wie es nach dem Dialog weiter geht, weiß ich noch nicht. Vielleicht realisiere ich die Benutzerauthentifikation auch mittels eigenem Script...

        Hallo Frank,

        Cool, das ist mal wieder eine klassische Situation, die die Arbeit eines Informatikers versüßt. :)
        Nur eine kleine Idee wie man User auch ohne REMOTE_USER identifizieren kannst. Du legst ein paar geschützte Verzeichnisse an, worin sich HTML Dokumente befinden, die einfach nur auf ein Script umleiten. Im Script kannst du statt dem REMOTE_USER den HTTP_REFERER abfragen, und anhand dessen festellen (je nach dem wie das Verzeichnis heißt, wo der User herkommt) den User bzw. die Usergruppe identifizieren.
        Wie du jetzt die richtigen User ins richtige Verzeichnis dirigierst ist dein Problem. ;)

        Gruß
        Cruz

        1. Hallo Cruz!

          Die Idee ist gut, mal sehen, was sich draus machen lässt!

          Besten Dank, Gruß Frank
          (reimt sich sogar :-)

        2. Hallo Cruz,

          Nur eine kleine Idee wie man User auch ohne REMOTE_USER identifizieren kannst. Du legst ein paar geschützte Verzeichnisse an, worin sich HTML Dokumente befinden, die einfach nur auf ein Script umleiten. Im Script kannst du statt dem REMOTE_USER den HTTP_REFERER abfragen, und anhand dessen festellen (je nach dem wie das Verzeichnis heißt, wo der User herkommt) den User bzw. die Usergruppe identifizieren.

          Das ist leider unsicher, da man den referer einfach fälschen kann. (wird ja vom browser gesendet)
          Sicherer ist es, sich selbst mit crypt() zu amüsieren und die pw-Datei zu checken.

          CYa
          GONZO