Frage

Ich bin vage bewusst, dass auf einem Computer mit einer Domäne verbunden kann IE einige zusätzlichen Header senden aufgefordert werden, die ich automatisch zu einer Anwendung nutzen könnte, um anmelden. Ich habe auf einem Windows-Server mit Apache mod_php Laufen bekommt. Ich möchte in der Lage sein, den Benutzer zu vermeiden, notwendig anmelden, wenn. Ich habe einige Links gefunden sprechen über Kerberos und Apache-Module.

http: // www. onlamp.com/pub/a/onlamp/2003/09/11/kerberos.html?page=last https://metacpan.org/pod/Apache2::AuthenNTLM

Da ich unter Windows ist es bewährte nicht-trivial sein, Perl oder Apache installierten Module zu erhalten. Aber nicht PHP haben bereits Zugriff auf HTTP-Header?

fand ich dieses, aber es keine Authentifizierung tun, es zeigt nur, dass PHP die NTLM-Header lesen kann. http://siphon9.net/loune/2007/10/ einfache leichte-ntlm-in-php /

Ich möchte in der Lage sein, meine Benutzer nur auf die Anwendung verweisen zu haben und sie automatisch authentifizieren. Hat jemand Erfahrung mit diesem oder es bekommen hatte, überhaupt zu arbeiten?

UPDATE Da ursprünglich diese Frage zu veröffentlichen, haben wir Setups geändert nginx und php-fcgi läuft noch an den Fenstern. Apache2 und PHP-cgi auf Windows ist wahrscheinlich eine der langsamsten Setups Sie auf Windows konfigurieren können. Es sieht wie Apache vielleicht noch gebraucht werden (es funktioniert mit PHP-fcgi), aber ich würde eine nginx Lösung bevorzugen.

ich auch noch nicht verstehen (und würde gerne erzogen werden), warum HTTP-Server-Plugins erforderlich ist, und wir können keine PHP, Web-Server agnostische Lösung.

War es hilfreich?

Lösung

Alles, was Sie brauchen, ist die mod_auth_sspi Apache-Modul.

Beispielkonfiguration:

AuthType SSPI
SSPIAuth On
SSPIAuthoritative On
SSPIDomain mydomain

# Set this if you want to allow access with clients that do not support NTLM, or via proxy from outside. Don't forget to require SSL in this case!
SSPIOfferBasic On

# Set this if you have only one domain and don't want the MYDOMAIN\ prefix on each user name
SSPIOmitDomain On

# AD user names are case-insensitive, so use this for normalization if your application's user names are case-sensitive
SSPIUsernameCase Lower
AuthName "Some text to prompt for domain credentials"
Require valid-user

Und vergessen Sie nicht, dass Sie auch können Firefox für transparenten SSO in einer Domäne Fenster: gehen Sie einfach auf about:config, für network.automatic-ntlm-auth.trusted-uris suchen, und geben Sie den Hostnamen oder FQDN Ihrer internen Anwendung (wie myserver oder myserver.corp.domain.com). Sie können mehr als einen Eintrag haben, es ist eine durch Kommata getrennte Liste.

Andere Tipps

Ich wäre neugierig auf eine Lösung, die OpenID als Backend verwendet (der Art) für diesen ... Ich war nichts zu sehen, die direkt in ActiveDirectory- Haken würden, wenn ich (schnell) gegoogelt. Allerdings könnte es ziemlich schmerzlos sein einfaches HTTP zu implementieren über (S) (Sie würden ein OpenID-Provider, die Anmeldeinformationen gegen Ihren lokalen AD geprüft). Im besten Fall, können Sie möglicherweise nur ein paar Klassen zu Ihren App hinzufügen und ab und läuft sein - keine Web-Server-Module erforderlich. Es gibt eine Menge von Open-Source-Code gibt für beide Seiten von diesem, so dass, wenn nichts anderes, es lohnt sich, einen Blick. Wenn Sie das Backend für die Benutzer ausgesetzt (d gab ihnen OpenID URLs), dann würden Sie den zusätzlichen Vorteil haben sie in der Lage sein, mehr zu melden Sie sich an, als nur Ihre internen Websites, diese Anmeldeinformationen. (Beispiel:. Stack-Überlauf)

Als beiseite, wäre ich dagegen machen, so dass Internet Explorer erforderlich ist. Ich bin mir nicht sicher, ob das ist das Ziel von der Art und Weisen Sie die Frage geschrieben, aber abhängig von Ihrer IT-Umgebung, würde ich erwarten, dass Menschen, die als begeistert weniger Firefox oder Safari (oder Opera oder ...) nutzen können. (Sie sind nicht gegen IE entwickeln erst, was? Das ist schon schmerzhaft, wenn ich so gemacht habe.) Das ist nicht zu sagen, dass Sie diese Funktion nicht von IE verwenden könnten, nur, dass es nicht die einzige Option sein sollte . Der Link, den Sie geschrieben erklärt, dass NTLM mit mehr gearbeitet als IE, aber da ich damit keine Erfahrung nicht habe, ist es schwer zu beurteilen, wie gut das funktionieren würde.

Ich hatte ein ähnliches Problem, das ich für meine Organisation zu lösen benötigt.

Ich war auf der Suche in mit adLDAP .

Es gibt einige Dokumentation auf der Website zur Erreichung nahtlose Authentifizierung mit Active Directory zu.

Eine Option für Sie CAS (Central Authentication Service) verwenden.

Es hat PHP-Client-Bibliothek.

Wie verlinken auf MS Active Directory: http: // www.ja-sig.org/wiki/display/CASUM/Active+Directory

Sie müssten Apache Maven 2 though.

Für IIS / PHP FCGI, benötigen Sie eine nicht autorisierte Header senden:

function EnableAuthentication()
{
    $realm = "yoursite";
    header('WWW-Authenticate: Digest realm="'.$realm.'",qop="auth",nonce="'.uniqid().'",opaque="'.md5($realm).'"');
    header("HTTP/1.1 401 Unauthorized"); 
    exit;
}

Sie können dann auf den Benutzernamen bekommen:

$winuser = $_SERVER["REMOTE_USER"];

ich dann sicherstellen, dass die $ winuser in meiner Datenbank erlaubt Benutzern ist.

Seien Sie sicher und testen Sie diese unter einem nicht-privilegierten Konto. Als ich das zum ersten Mal installiert testete ich es und es funktionierte gut, aber später, wenn ein Nicht-Standard-Server-Admin-Benutzer versucht, dies schlug fehl. Es stellte sich heraus einige der temporären Verzeichnisse müssen die Berechtigungen für Gastbenutzer geändert haben. Ich kann nicht die genaue Einstellungen wieder zu verwenden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top