Pregunta

¿Cómo implementaría un sistema con los siguientes objetivos?

  • Gestionar la autenticación, la autorización paracientos de miles de Usuarios existentes actualmente está estrechamente integrado con la aplicación de un proveedor externo (queremos incluir a estos usuarios en algo que administramos y hacer que nuestras aplicaciones funcionen en su contra, además de que nuestros proveedores externos trabajen en su contra).
  • Administrar la información del perfil vinculada a esos usuarios.
  • Se debe poder acceder desde cualquier cantidad de aplicaciones web en casi cualquier plataforma (Windows, *nix, PHP, ASP/C#, Python/Django, etc.).

Aquí algunas implementaciones de muestra:

  • Servidor LDAP/AD para gestionar todo.Utilice un esquema personalizado para todos los datos del perfil.Todo puede autenticarse contra LDAP/AD y podemos almacenar todo tipo de ACL y datos de perfil en un esquema personalizado.
  • Utilice LDAP/AD solo para autenticación, vincule a los usuarios de LDAP a un servidor de perfil/autorización más robusto utilizando algún tipo de base de datos tradicional (MSSQL/PostgreSQL/MySQL) o base de datos basada en documentos (CouchDB, SimpleDB, etc.).Use LDAP para autorización, luego presione la base de datos para obtener cosas más avanzadas.
  • Utilice una base de datos tradicional (Relacional o Documental) para todo.

¿Alguno de estos tres es el mejor?¿Existen otras soluciones que se ajusten a los objetivos anteriores y sean más fáciles de implementar?

** Debo agregar que casi todas las aplicaciones que se autenticarán en la base de datos del usuario estarán bajo nuestro control.Los únicos extraños serán las aplicaciones de las que estamos eliminando la base de datos de usuarios actual y quizás 1 o 2 más.Nada tan amplio como para necesitar un servidor openID.

También es importante saber que muchos de estos usuarios han tenido estas cuentas durante 5 a 8 años y conocen sus nombres de usuario y contraseñas, etc.

¿Fue útil?

Solución

Existe una diferencia entre autenticación y autorización/elaboración de perfiles, por lo que no fuerce ambas necesariamente en una sola herramienta.Su segunda solución de usar LDAP para autenticación y una base de datos para autorización parece más sólida ya que los datos LDAP están controlados por el usuario y la base de datos estaría controlada por un administrador.Es probable que esto último cambie en estructura y complejidad con el tiempo, pero la autenticación es solo esa autenticación.La separación de estas funciones resultará más manejable.

Otros consejos

Si tiene una infraestructura ActiveDirectory existente, ese será el camino a seguir.Esto será particularmente ventajoso para las empresas que ya han configurado servidores Windows para la autenticación.Si este es el caso, me inclino por el primer punto de "implementaciones de muestra".

De lo contrario, será una elección entre las opciones AD y LDAP de código abierto.

Puede que no sea viable implementar su propio esquema de autenticación para el inicio de sesión único (especialmente considerando la gran cantidad de documentación y trabajo de integración que podría tener que hacer) y, obviamente, no combine su servidor de autenticación con ninguna de las aplicaciones que se ejecutan en su sistema (ya que desea que pueda ser independiente de la carga de dichas aplicaciones).

¡Buena suerte!

Utilice LDAP/AD solo para autenticación, vincule a los usuarios de LDAP a un servidor de perfil/autorización más robusto utilizando algún tipo de base de datos tradicional (MSSQL/PostgreSQL/MySQL) o base de datos basada en documentos (CouchDB, SimpleDB, etc.).Use LDAP para autorización, luego presione la base de datos para obtener cosas más avanzadas.

Tenemos diferentes sitios con alrededor de 100.000 usuarios y todos funcionan con bases de datos normales.Si la mayoría de las aplicaciones pueden acceder a la base de datos, puede utilizar esta solución.

Siempre puedes implementar el tuyo propio. ID abierto servidor.Ya hay un Biblioteca Python para OpenID entonces debería ser bastante fácil.

Por supuesto, no necesita aceptar inicios de sesión autorizados por otros servidores en sus aplicaciones.Acepte credenciales autorizadas únicamente por su propio servidor.

Editar: he encontrado un implementación del protocolo de servidor OpenID en Django.

Editar2: Existe una ventaja obvia al implementar OpenID para sus usuarios.Podrán iniciar sesión en StackOverflow con sus inicios de sesión :-)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top