2009-02-19 45 views
5

Me interesan las mejores prácticas de uso de la autenticación LDAP en una aplicación web basada en Java. En mi aplicación, no quiero almacenar el nombre de usuario/contraseña, solo algunos identificadores. Pero quiero recuperar información adicional (nombre, apellido) si existe alguna en un catálogo LDAP.Mejores prácticas de LDAP

Respuesta

6

Mi equipo usa LDAP como una forma estándar de autenticación. Básicamente, tratamos LDAP como cualquier otra base de datos.

Para agregar usuario a la aplicación, debe elegir uno de LDAP o crearlo en LDAP; cuando el usuario es eliminado de la aplicación, permanece en LDAP pero no tiene acceso a la aplicación.

Básicamente, necesita almacenar solo el nombre de usuario LDAP localmente. Puede leer datos de LDAP (correo electrónico, departamento, etc.) desde LDAP cada vez, o extraerlos de algún modo de la aplicación, aunque leerlos desde LDAP es probablemente más simple e inteligente ya que los datos de LDAP pueden cambiar. Por supuesto, si necesita informar o usar datos de LDAP extensamente, es posible que desee extraerlo de LDAP (manualmente o con la tarea por lotes).

Lo bueno es que una vez que un usuario está deshabilitado en LDAP, se desactiva en todas las aplicaciones a la vez; Además, el usuario tiene las mismas credenciales en todas las aplicaciones. En el entorno corporativo, con un montón de aplicaciones internas, esta es una gran ventaja. No use LDAP para usuarios para una sola aplicación; no hay beneficios reales en ese escenario.

1

Si tiene más de una aplicación basada en web y desea usar la autenticación LDAP, una solución de inicio de sesión único preempaquetado podría ser mejor que crear su propia autenticación LDAP. CAS admite la autenticación LDAP y puede recuperar los datos que necesita para su aplicación.

En mi universidad, en realidad hemos implementado CAS como un inicio de sesión único en contra de nuestro servidor de Active Directory. También utilizamos CAS para autenticar nuestras aplicaciones J2EE y estamos trabajando en el uso de CAS para autenticar nuestras aplicaciones PHP.

Utilizamos AD para mantener a los usuarios del dominio. Hay ciertas unidades organizativas según el tipo de usuario. Cada uno de los usuarios tiene una identificación única que es su identificación de estudiante/empleado, por lo que las aplicaciones pueden usarla como clave principal en sus bases de datos. Tenemos un método de autorización basado en bases de datos para nuestras aplicaciones PHP. La autorización para la aplicación J2EE proviene de un valor en LDAP.

Buena suerte con su aplicación.

0

¿Desea que el usuario ingrese solo la ID y luego obtenga el resto de su información de LDAP? Eso es bastante fácil.

  1. Crear contexto LdapInitial y conectarse a LDAP
  2. Haga una búsqueda para el ID (que debe ser almacenado como un valor de atributo) - por ejemplo, (& (identificador de usuario = John) (objectClass = user)) - que significa "ID de usuario = John y objectClass = user"
  3. objeto SearchResult contendría todos los atributos (o los que se solicita)

Algunos LDAP las implementaciones (MS ActiveDirectory LDAP notable) no le permiten conectarse con usuarios anónimos. Para aquellos que necesita tener un ID de usuario/contraseña técnica para conectarse.

Como se dijo anteriormente, LDAP normalmente tiene sentido cuando tiene muchas aplicaciones.

P.S. Para sentir lo que LDAP es probar Apache Directory Studio.

+0

¡No del todo! En la base de datos de mi aplicación, deseo solo ID de tienda y DN relacionado de LDAP. Y si necesito información adicional sobre el usuario, puedo obtenerla del directorio usando DN –

+0

Depende de usted, aunque es una duplicación. Pero, ¿de qué se trata realmente? –

4

Para conocer las mejores prácticas generales con LDAP, consulte "LDAP: Programming practices".

+2

El enlace está muerto, pero se puede encontrar un resumen en https://ff1959.wordpress.com/2011/10/27/ldap-programming-best-practices/ –