2009-03-17 9 views
0

Ich könnte wirklich Hilfe bei der Lösung eines scheinbar trivialen Problems gebrauchen. Zusammenfassend möchte ich die Login-ID des Fensters für den Benutzer kennenlernen, der auf eine .cgi-Perl-Datei zugreift, die in Apache in einer Windows-Umgebung ausgeführt wird.Windows loginID help unter Windows/Apache2.2 Umgebung

Hier ist meine Grund Apache2 conf Ergänzungen:

---- beginnen httpd.conf -----

... 

LoadModule sspi_auth_module modules/mod_auth_sspi.so 
... 
<IfModule mod_auth_sspi.c> 
    <Location "C:/Program Files/Apache Software Foundation/Apache2.2/cgi-bin"> 
     AuthName "A Protected Place" 
     AuthType SSPI 
     SSPIAuth On 
     SSPIAuthoritative On 
     #SSPIBasic On 
     SSPIOfferBasic On 
     #SSPIDomain On 
     #SSPIBasicPreferred 
     #SSPIUsernameCase lower 
     require valid-user 
    </Location> 
</IfModule> 
... 
<Directory "C:/Program Files/Apache Software Foundation/Apache2.2/cgi-bin"> 
    AllowOverride None 
    Order allow,deny 
    Allow from all 
</Directory> 
... 

---- Ende httpd.conf -----

Darüber hinaus habe ich auch aktiviert SSL auf meinem Rechner an die hervorragenden Anweisungen mit: http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-serversetup.html#tsvn-serversetup-apache-7

die Website über Anrufe für den Apache-Modul mod Laden _auth.so, aber ich kann es nicht in meiner Apache2-Standardinstallation finden. Wie Sie sehen können, habe ich das Modul mod_auth_sspi-1.0.4-2.2.2 meiner Apache2-Umgebung manuell hinzugefügt.

Nun, wenn ich versuche, beide http://localhost/cgi-bin/test.cgi UND https://localhost/cgi-bin/test.cgi, ich sehe nichts mehr im Weg eines REMOTE_USER in dem http/Umgebungsvariablen. Ich weiß, dass SSL funktioniert, weil der https-Aufruf eine Tonne SSL-Variablen anzeigt. Auch habe ich keine Anforderung für SSL, aber benutze es nur, da der Link oben besagt, dass es erforderlich ist, um die Windows-Login-Informationen zu erhalten.

Ich würde wirklich jede Einsicht schätzen. Ich bin froh, die httpd.conf-Datei vollständig zu teilen, wenn das hilfreich ist. Im Grunde genommen ist alles, was ich suche, eine Möglichkeit, die Windows loginID in meinem Perl .cgi auf einer Windows/Apache2.2-Hosting-Umgebung zu erfassen.

Vielen vielen Dank im Voraus für die Hilfe aller,

Saker Ghani

Antwort

-1

keine Windows-Programmierer, so dass ich bin mir nicht sicher, was ein loginID ist, aber vielleicht Win32::LoginName and Win32::LookupAccountName wird eine Hilfe sein?

+0

Leider wird das nicht tun, da Windows den .cgi als SYSTEM-Benutzer ausführt und beide oben genannten Lösungen nur die Identität des übergeordneten Benutzers zurückgeben können. In diesem Fall benötigen wir den Client-Browser, um die Windows/NTLM-Login-ID irgendwie an Apache zu liefern, so dass das .cgi diese Informationen nutzen kann. –

+0

Ah. Jawohl. Das scheint die Art von Sache zu sein, die der Browser normalerweise nicht auf den Server übertragen sollte? – ysth

0

Dies könnte nicht zu viel helfen, aber ich glaube nicht, dass Sie etwas Besonderes tun müssen, um diese Informationen zu erhalten. Ich führe eine Apache 2.2-Installation mit mod_auth_sspi aus und benutze die Umgebungsvariable REMOTE_USER, um die gesuchten Informationen erfolgreich zu erhalten. (Zum Beispiel, wenn ich auf eine der Seiten zugreife, ist REMOTE_USER "MYDOMAIN \ oeuchtete".)

Ich benutze nicht die SSPIOfferBasic-Option, die der einzige wesentliche Konfigurationsunterschied ist, aber ich denke nicht, dass das von Bedeutung wäre . Ich spezifiziere auch die Optionen in der Richtlinie und nicht in einer separaten Richtlinie.

Ich denke, was ich sage ist, basierend auf dem, was Sie gegeben haben, es sollte arbeiten. Vielleicht passiert also noch etwas anderes.


Edit: Hier ist die Grundlagen meiner httpd.conf.

LoadModule sspi_auth_module modules/mod_auth_sspi.so 

<IfModule mime_module> 
    AddHandler cgi-script .pl 
</IfModule> 

<IfModule alias_module> 
    Alias /sotest "C:/Some/path/" 
</IfModule> 

<Directory "C:/Some/path"> 
    Options ExecCGI 

    Order allow,deny 
    Allow from all 

    AuthName "Foo" 
    AuthType SSPI 
    SSPIAuth On 
    SSPIAuthoritative On 

    require valid-user 
</Directory> 

Und eine kurze test.pl in diesem Verzeichnis.

Hier ist die resultierende Seite von Sotest/Test zu gehen.pl:

<!DOCTYPE html 
    PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US" xml:lang="en-US"> 
<head> 
<title>Untitled Document</title> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 
</head> 
<body> 
MYDOMAIN\oeuftete 
</body> 
</html> 
+0

oeuftete, wenn es nicht zu viel verlangen würde, gibt es eine Möglichkeit, wie Sie Ihre httpd.conf-Datei mit mir teilen könnten? Das wäre eine große Hilfe. Meine E-Mail-Adresse ist saker bei ghani dot com. –

+0

Danke oeuftete. Der Code funktioniert, aber nur, wenn ich bei der Maschine angemeldet bin, auf der Apache und die .cgi selbst laufen. Können Sie die oben genannten Arbeiten ausführen, wenn Sie von einer anderen Maschine auf sotest/test.pl zugreifen? In meinem Fall bekomme ich eine "Authorization Required" auf FF und eine Authentifizierungsaufforderung auf IE. –

+0

Es funktioniert für mich auf IE gut ... wenn Sie eine Authentifizierungsaufforderung in IE erhalten, dann sind Sie wahrscheinlich kein gültiger Benutzer. Was sagt Ihr Apache error.log, wenn Sie die Aufforderung erhalten? Für FF müssen Sie sich mit Ihren Domaininformationen anmelden. Also in meinem Beispiel Benutzer "MYDOMAIN \ oeuchtete" und das Passwort. – oeuftete

Verwandte Themen