Estoy buscando una forma de autenticar usuarios a través de LDAP con PHP (con Active Directory como proveedor). Idealmente, debería poder ejecutarse en IIS 7 ( adLDAP lo hace en Apache). ¿Alguien había hecho algo similar, con éxito?
- Editar: Preferiría una biblioteca / clase con código que esté listo para funcionar ... Sería una tontería inventar la rueda cuando alguien ya lo ha hecho.
Respuestas:
Importar una biblioteca completa parece ineficaz cuando todo lo que necesita son esencialmente dos líneas de código ...
fuente
ldap_set_option
para hacer que se comporte de una manera diferente. ¿Quizás establecer la versión del protocolo? Tendrás que experimentar. Personalmente, le sugiero que busque una contraseña vacía de todos modos, solo para estar seguro.ldap_bind
lo sería manejarla y los caracteres especiales no son un problema.Pensaría que simplemente autenticar a un usuario en Active Directory sería un proceso bastante simple usando LDAP en PHP sin la necesidad de una biblioteca. Pero hay muchas cosas que pueden complicarlo bastante rápido:
De hecho, en la mayoría de los casos es más fácil utilizar una biblioteca LDAP que admita lo anterior. Finalmente terminé lanzando mi propia biblioteca que maneja todos los puntos anteriores: LdapTools (Bueno, no solo para la autenticación, puede hacer mucho más). Se puede usar de la siguiente manera:
La llamada de autenticación anterior:
También hay otras bibliotecas para hacer esto (como Adldap2). Sin embargo, me sentí lo suficientemente obligado a proporcionar información adicional ya que la respuesta más votada es en realidad un riesgo de seguridad en el que confiar sin validación de entrada y sin usar TLS.
fuente
ldaps://
formato para la conexión está en desuso. En mi ejemplo, cuando especificasetUseTls(true)
, usaldap://
formato y luego emite un StartTLS usandoldap_start_tls($connection)
. Por lo tanto, TLS en sí no se ha desaprobado, solo se conecta usandoldaps://
(que en realidad se conecta a LDAP a través de un puerto completamente diferente).Hago esto simplemente pasando las credenciales de usuario a ldap_bind ().
http://php.net/manual/en/function.ldap-bind.php
Si la cuenta se puede vincular a LDAP, es válida; si no puede, no lo es. Si todo lo que está haciendo es autenticación (no administración de cuentas), no veo la necesidad de una biblioteca.
fuente
Me gusta la clase Zend_Ldap , puede usar solo esta clase en su proyecto, sin Zend Framework.
fuente
PHP tiene bibliotecas: http://ca.php.net/ldap
PEAR también tiene varios paquetes: http://pear.php.net/search.php?q=ldap&in=packages&x=0&y=0
Tampoco he usado, pero iba a hacerlo en un momento y parecía que deberían funcionar.
fuente
Para aquellos que buscan un ejemplo completo, consulte http://www.exchangecore.com/blog/how-use-ldap-active-directory-authentication-php/ .
He probado esto conectándome a controladores de dominio de Windows Server 2003 y Windows Server 2008 R2 desde un servidor web de Windows Server 2003 (IIS6) y desde una empresa de Windows Server 2012 que ejecuta IIS 8.
fuente