2009-03-11 5 views
7

J'ai créé des ressources intranet basées sur PHP qui demandent aux utilisateurs de se connecter. Les utilisateurs créent leurs propres connexions, et je vérifie qu'elles sont connectées à l'aide d'un cookie.Un intranet PHP peut-il partager les connexions Windows?

On m'a demandé si je pouvais lier ce login à leur connexion Windows à la place. Ma réponse initiale était "une page Web ne peut pas accéder à votre connexion Windows - ce serait un risque de sécurité." Mais un de nos départements utilise Sharepoint, et il se lie en fait à la connexion Windows.

Comment cela est-il fait? Puis-je le faire en PHP? Si oui, pourquoi n'est-ce pas un horrible trou de sécurité?

Répondre

8

Ce que vous recherchez est L'authentification NTLM contre le site PHP, ce qui est parfaitement faisable mais il semble qu'il n'y ait pas de moyen unique en PHP de le faire.

Jetez un oeil à http://siphon9.net/loune/2007/10/simple-lightweight-ntlm-in-php/

Vous devez également ajouter les sites à vos sites de confiance dans IE (ou l'équivalent dans le navigateur que vous utilisez) et dans les paramètres des sites de confiance, activez « envoyer en cours nom d'utilisateur et mot de passe'.

Ce n'est pas un trou de sécurité horrible parce que les informations d'identification ne sont pas envoyées en clair sur le fil, et l'utilisateur final a spécifiquement demandé au navigateur d'envoyer des informations d'identification sur le site en question.

5

PHP supporte LDAP, vous pouvez accéder à Active Directory Windows

Il y a ce projet sur SourceForge: adLDAP - "Authentification LDAP avec PHP pour Active Directory"

4

Souvent, cela est fait en utilisant une combinaison de LDAP et NTLM. Les navigateurs comme IE et Firefox peuvent faire l'authentification NTLM, ce qui fonctionne selon Sharepoint. J'exécute une application de portail basée sur Java qui utilise LDAP pour synchroniser les utilisateurs et NTLM pour l'authentification.

Ce que vous ne voulez absolument pas, c'est que l'utilisateur entre son nom d'utilisateur et son mot de passe dans le navigateur. Au cours des dernières années, j'ai vu plusieurs projets utilisant cette approche avec LDAP pour authentifier les utilisateurs Windows. Vous avez raison, c'est un problème de sécurité. L'utilisateur doit entrer son mot de passe une seule fois: lors de la connexion au poste de travail. La dernière chose que vous voulez sont les mots de passe assis dans les fichiers cache/temp.

Je m'excuse de ne pouvoir vous fournir une réponse "voici comment vous le faites avec une application PHP". Pour autant que je sache, il n'y a pas de réponse unique à ce problème.

(Une chose que j'ai faite par le passé, et que je n'ai jamais vraiment vérifiée pour savoir si elle était valide ou médiocre, était d'utiliser PHP depuis IIS. REMOTE_USER avec le nom d'utilisateur de l'utilisateur Windows (DOMAIN \ user) Cela a fonctionné pour ce que je faisais à ce moment-là.)

Questions connexes