2009-03-11 16 views
7

He creado algunos recursos de intranet basados ​​en PHP que requieren que los usuarios inicien sesión. Los usuarios crean sus propios inicios de sesión, y verifico que están conectados usando una cookie.¿Puede una intranet PHP compartir inicios de sesión de Windows?

Me han preguntado si puedo vincular ese inicio de sesión a su inicio de sesión de Windows. Mi respuesta inicial fue "una página web no puede acceder a su inicio de sesión de Windows, eso sería un riesgo para la seguridad". Pero uno de nuestros departamentos usa Sharepoint, y de hecho se relaciona con el inicio de sesión de Windows.

¿Cómo se hace eso? ¿Puedo hacerlo en PHP? Si es así, ¿por qué no es un agujero de seguridad horrible?

Respuesta

8

Lo que estamos buscando es Autenticación NTLM contra el sitio web PHP, que es perfectamente factible, pero parece que no hay una sola forma en PHP para hacerlo.

Tenga una mirada en http://siphon9.net/loune/2007/10/simple-lightweight-ntlm-in-php/

También es necesario agregar los sitios a los sitios de confianza de Internet Explorer (o el equivalente en el navegador que está utilizando) y en la configuración de sitios de confianza, active 'enviar actual nombre de usuario y contraseña'.

No es un agujero de seguridad horrible porque las credenciales no se envían en Clair por cable, y el usuario final le ha dicho específicamente al navegador que envíe las credenciales al sitio web en cuestión.

5

PHP tiene soporte LDAP, para que pueda acceder a Windows Active Directory

No es este proyecto en SourceForge: adLDAP - "Autenticación LDAP con PHP para Active Directory"

4

Muchas veces esto se hace usando una combinación de LDAP y NTLM. Navegadores como IE y Firefox pueden hacer autenticación NTLM, que creo que es la forma en que funciona Sharepoint. Ejecuto una aplicación de portal basada en Java que usa LDAP para sincronizar usuarios y NTLM para la autenticación.

Lo que no quieres hacer es que el usuario ingrese el nombre de usuario y la contraseña de su dominio en el navegador. En años anteriores, he visto varios proyectos que utilizan este enfoque con LDAP para autenticar usuarios de Windows. Estás en lo correcto, es una preocupación de seguridad. El usuario debe ingresar su contraseña solo una vez: al iniciar sesión en la estación de trabajo. Lo último que quiere son contraseñas sentadas en los archivos de caché/temp.

Pido disculpas por no poder proporcionar la respuesta "He aquí cómo lo haces con una aplicación PHP". Hasta donde yo sé, no hay una sola respuesta a este problema.

(Una cosa que he hecho en el pasado, y nunca he comprobado realmente si era una forma válida o deficiente, era usar PHP de IIS. Si está utilizando IIS, PHP rellenará la variable del servidor REMOTE_USER con el nombre de usuario del usuario de Windows (DOMINIO \ usuario). Funcionó para lo que estaba haciendo en ese momento).

Cuestiones relacionadas