PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Apache Authentifizierung gegen PHP Session



craano
05.12.08, 23:46
Hallo,

weiß jemand von Euch, ob es ein Authentifizierungsmodul für den Apache gibt, mit dem man nicht gegen eine Textdatei oder eine Datenbank prüft, sondern mit dem der Server selbst gegen eine HP Session prüft?

Ich habe vor einen typischen Webseiten mittels PHP Sessions und Login Fotmular einzurichten. Beispielsweise so:
http://www.tutorials.de/forum/php-tutorials/9684-php-mysql-login-system-mit-sessions.html

Ist es nun möglich in der httpd.conf eine Direktive für bestimmte Verzeichnisse zu schreiben, die beim Zugriff auf ein bestimmtes Verzeichnis überprüft, ob eine PHP Session existiert? Wenn eine Session existiert, soll auf den Inhalt des Verzeichnisses zugegriffen werden dürfen. Wenn keine Session existiert soll auf die Login Seite redirected werden. Kann der Apache überhaupt die PHP Sessions "sehen"?

Der Hintergedanke ist. Ich habe in diesen Verzeichnissen automatisch generierte Dateien, deren Inhalt ich nicht verändern kann / möchte. Nun möchte ich keine mod_auth / AuthType Basic Lösung, da dann eine erneute Benutzernamen / Passwort Abfrage aufpoppt. Die berechtigten User sind zu diesem Zeitpunkt ja schon authentifiziert (über die vorgenannten PHP Sessions).

Kennt Ihr eine solche Lösung?

Grüße.
craano.

Roger Wilco
06.12.08, 17:25
Eventuell hilft dir http://www.openfusion.com.au/labs/mod_auth_tkt/ weiter. Ansonsten müsstest du mit http://www.unixpapa.com/mod_auth_external.html eine eigene Lösung bauen.

craano
07.12.08, 20:48
Werde mir die beiden Links gleich mal anschaun. Mal sehen, ob ich das Können / die Lust habe etwas eigenes zu bauen.
Ich hätte gedacht, es gäbe bielleicht schon etwas fertiges. Ein sessions-basierter PHP Zugriffsschutz ist ja nun nichts Ungwöhnliches.

Wie löst Ihr denn beispielsweise den Verzeichnisschutz / Seitenschuts mit Single Sign on?

Grüße.
craano.

EDIT:
Habe noch mal nachgedacht. Ich brauche ja keine neue Implementierung einer Authentifizierung. Im Grunde suche ich folgendes:
<DIRECTORY /var/www/auth>
if (session exits) {Datei zum Client senden}
else {Fehlermeludungsseite zum Client senden}
</DIRECTOY>
Leider kenne ich mit der Konfiguration des Apaches nicht sehr gut aus. Mir fehlen da ein wenig die Suchbegriffe. Kann man überhaupt Anweisungen solcher Art in die httpd.conf einbauen? Vielleicht mit Filtern, Handlern, Action oder Script?

craano
08.12.08, 14:29
Ich habe nochmal über meine obigen Gedanken nachgedacht.

Man könnte doch eine neuen Handler in der httpd.conf setzen:

AddHandler schutz-html html
Action schutz-html /cgi-bin/schutz-hinzufügen.pl

Wenn nun eine (HTML-)Seite in einem Verzeichnis aufgerufen wird, in dem der Handler greift, dann wird diese zunächst an ein Perl Skript übergeben. Das Skript fügt nun zur Laufzeit den PHP - Session Abfrage an den Kopf der Datei ein.

Wie verhindere ich nun die sofortige Auslieferung der Datei. Die Datei müsste, nach der Verarbeitung des Perl Skriptes, erst noch auf PHP Skripte geparsed werden, damit der hinzugefügte Quellcode auch verarbeitet wird und nicht einfach an den Client mit ausgeliefert wird.
Könnte eine zweite Anweisung in einer zweiten Action Zeile dies bewerkstelligen?

Grüße.
craano.

marce
08.12.08, 16:39
wäre eine Lösung über mod_proxy denkbar?

(ohne genauer nachgeforscht zu haben - aber gerade Proxies können derlei Auth-Szenarien meist recht gut nachbilden...)

craano
08.12.08, 19:42
wäre eine Lösung über mod_proxy denkbar?

(ohne genauer nachgeforscht zu haben - aber gerade Proxies können derlei Auth-Szenarien meist recht gut nachbilden...)

Danke marce. Ich schaue mir das Modul näher an, sobald ich etwas Zeit habe.

Meine bisheriger Lösungsansatz^^ steht und fällt mit der Bearbeitungsreihenfolge das Apaches. Ich versuche gerade herauszufinden, ob die Datei zuerst nach PHP Code geparsed oder ob zuerst die Handler / Action abgearbeitet werden. Wenn die Reihenfolge passt, dann müsste es gehen. Am nächsten Wochenende werde ich einen kleinen Testrechner aufsetzen und probiere das einmal durch.

Grüße.
craano.