Seite 1 von 1

"AuthType Basic" mit mod_python

Verfasst: Dienstag 14. Februar 2006, 10:25
von monocult
Hallo,

hab folgendes Problem. Ich möchte eine Authentifizierung über "AuthType Basic" normalerweise würde ich also eine .htaccess Datei und die dazugehörige Passwort bzw Gruppen Datei anlegen.
Die eigentliche Auswertung der Passwörter mach ich über eine psp Datei. Das funktioniert auch mit dem unten abgebildeten Script und der modifizierten .htaccess Datei Problem los.

Jetzt die Schwierigkeit ich würde gerne den Anstoß zur Authentifizierung nicht über die .htaccess Dateien geben. Sondern quasi aus der psp den Header manipulieren um den Browser zu Authentifizierung zu bewegen.

in php würde das z.b. so aussehen.

Code: Alles auswählen

<?php
  if (!isset($_SERVER['PHP_AUTH_USER'])) {
       Header("WWW-Authenticate: Basic realm=\"My Realm\"");
       Header("HTTP/1.0 401 Unauthorized");
       echo "Text to send if user hits Cancel button\n";
       exit;
       } else {
   echo "Hello {$_SERVER['PHP_AUTH_USER']}";
   echo "<p>You entered {$_SERVER['PHP_AUTH_PW']} as your password.</p>";
  }
?> 
was ich auch nicht verstehe ist wie das mit den Request Handlers im allgemeinen funktioniert ich finde da die Doku leider etwas dünn. Wenn ihr mir vielleicht auf die Sprünge helfen könntet währe ich euch sehr dankbar.

Code: Alles auswählen

AddHandler mod_python .py
PythonHandler mod_python.publisher
PythonAuthenHandler test
PythonDebug On
AuthType Basic
AuthName "Restricted Area"
require valid-user

Code: Alles auswählen

from mod_python import apache

def authenhandler(req):

    pw = req.get_basic_auth_pw()
    user = req.user

    if user == "spam" and pw == "eggs":
       return apache.OK
    else:
       return apache.HTTP_UNAUTHORIZED

Verfasst: Sonntag 19. Februar 2006, 10:18
von henning
Ich hab auch lange und schmutzig mit mod_python direkt garbeitet.
Und unter anderem auch mit AuthtypeBasic viel rumprobiert (dann irgendwann aufgegeben).
Was ich dir auf jeden Fall raten kann: Lass die Finger von mod_python.
Guck dir WSGI an, dass ist eine abstraktion über mod_python, CGI uvm.
soll heissen, was du in WSGI schreibst kannst du auch unter mod_python laufen lassen, aber sparst dir einige unangenehme Eigenheiten.
(Ausserdem ist dein Code viel portabler!)