2009-03-11 6 views
7

Ich habe einige PHP-basierte Intranet-Ressourcen erstellt, für die sich Benutzer anmelden müssen. Die Benutzer erstellen ihre eigenen Logins und ich überprüfe, ob sie mit einem Cookie angemeldet sind.Kann ein PHP-Intranet Windows-Logins gemeinsam nutzen?

Ich wurde gefragt, ob ich diese Anmeldung stattdessen an ihre Windows-Anmeldung binden kann. Meine erste Antwort lautete: "Eine Webseite kann nicht auf Ihren Windows-Login zugreifen - das wäre ein Sicherheitsrisiko." Aber eine unserer Abteilungen verwendet Sharepoint und bindet sich tatsächlich an die Windows-Anmeldung.

Wie wird das gemacht? Kann ich das in PHP machen? Wenn ja, warum ist es kein schreckliches Sicherheitsloch?

Antwort

8

Was Sie suchen, ist NTLM-Authentifizierung gegen die PHP-Website, die vollkommen machbar ist, aber scheint es gibt keine einzige Möglichkeit in PHP, es zu tun.

Werfen Sie einen Blick auf http://siphon9.net/loune/2007/10/simple-lightweight-ntlm-in-php/

Sie müssen auch die Websites zu Ihrer vertrauenswürdigen Sites in Internet Explorer (oder den entsprechenden Betrag in je nachdem, welcher Browser Sie verwenden) hinzufügen und in den Einstellungen für vertrauenswürdige Sites, schalten Sie ‚senden Strom Benutzername und Passwort'.

Es ist keine schreckliche Sicherheitslücke, weil die Anmeldeinformationen nicht en clair over the wire gesendet werden, und der Endbenutzer hat den Browser ausdrücklich aufgefordert, Anmeldeinformationen an die betreffende Website zu senden.

5

PHP hat LDAP-Unterstützung, so dass Sie Active Directory

Es ist dieses Projekt auf Source auf Windows zugreifen können: adLDAP - "LDAP-Authentifizierung mit PHP für Active Directory"

4

Oft ist dies eine Kombination aus LDAP und NTLM. Browser wie IE und Firefox können NTLM-Authentifizierung durchführen, was meiner Meinung nach funktioniert Sharepoint. Ich verwende eine Java-basierte Portalanwendung, die LDAP für die Synchronisierung von Benutzern und NTLM für die Authentifizierung verwendet.

Was Sie nicht unbedingt tun möchten ist, dass der Benutzer seinen Domain-Benutzernamen und sein Passwort in den Browser eingibt. In den vergangenen Jahren habe ich mehrere Projekte mit diesem Ansatz mit LDAP zur Authentifizierung von Windows-Benutzern gesehen. Du hast recht, es ist ein Sicherheitsrisiko. Der Benutzer sollte sein Passwort nur einmal eingeben: beim Einloggen in die Workstation. Das letzte, was Sie wollen, sind Passwörter, die in Cache-/temporären Dateien herumliegen.

Ich entschuldige mich, dass ich nicht eine Antwort "Hier ist, wie Sie es mit einer PHP-App tun" bieten kann. Soweit ich weiß, gibt es keine Antwort auf dieses Problem.

(Eine Sache, die ich in der Vergangenheit getan habe, und ich nie wirklich überprüft, ob es gültig oder schlechte Form war, war PHP von IIS zu verwenden. Wenn Sie IIS verwenden, wird PHP die Servervariable auffüllen REMOTE_USER mit dem Benutzernamen des Windows-Benutzers (DOMAIN \ Benutzer). Es funktionierte für das, was ich zu der Zeit tat.)

Verwandte Themen