Me interesan las estrategias que se pueden usar para manejar la autenticación y la autorización de usuario en un sistema distribuido multiplataforma. Me gustaría poder marcar acciones en el sistema como pertenecientes a un determinado usuario y también permitir que ciertos usuarios realicen ciertas acciones.Estrategias para manejar la autenticación y autorización de usuario multiplataforma
Antecedentes: El sistema se utiliza actualmente solamente en Windows, donde las acciones iniciadas por un usuario en la actualidad sólo etiquetados como procedentes de la máquina particular del usuario. Una acción básicamente implica usar la CPU para hacer algunos cálculos y devolver el resultado.
Actualmente no se realiza ninguna autorización ni autenticación de usuarios (o entre computadoras). El sistema se está ejecutando como un servicio con privilegios bajos (usando la cuenta de SERVICIO DE RED). Los datos no son confidenciales y todos los usuarios de la red local pueden utilizar el sistema al máximo.
El sistema se puede implementar tanto en configuraciones de dominio de Windows homogéneas como en grupos de trabajo sin un controlador de dominio o con una combinación de un dominio junto con un grupo de equipos de trabajo que no pertenecen al dominio.
Problema
Para añadir funcionalidad al sistema, dicen, por ejemplo, la recogida de estadísticas de uso por usuario o mostrar que está haciendo uso de un ordenador es necesario hacer un seguimiento de los usuarios individuales. Además de esto, si ciertos usuarios solo deben permitir ciertas acciones (por ejemplo, cambiar algunas configuraciones para el sistema), también se requiere alguna forma de autorización.
Tengo una buena comprensión de la forma de Windows de hacer esto y agregar este tipo de funcionalidad en una configuración de dominio de Windows homogénea sería sencillo utilizando la funcionalidad integrada de autenticación y autorización en Windows. Esto también elimina la necesidad de asignar al sistema cuentas especiales solo válidas para este sistema en particular: una vez que el usuario ha iniciado sesión normalmente, toda la autenticación y autorización pueden realizarse sin requerir ninguna interacción adicional del usuario.
Pero, ¿qué ocurre si el sistema debe poder ejecutarse en Mac OSX? ¿O Linux? ¿Qué ocurre si se supone que se ejecuta en un entorno mixto con algunos usuarios en un dominio de Windows, otros en OSX y algunas máquinas de trabajadores que ejecutan Linux? (El sistema real puede ser portado a todos estos sistemas y maneja la comunicación multiplataforma, etc.). Tengo un conocimiento limitado de la forma en que se manejan la autenticación y la autorización en estas plataformas y no tengo conocimiento de cómo se puede lograr esto al interactuar entre plataformas.
¿Hay alguna buena estrategia para usar para la autenticación y autorización de usuario multiplataforma en un sistema distribuido como este? Tenga en cuenta el doble uso de "multiplataforma" aquí, tanto como para poder compilar el programa para diferentes plataformas y para poder interactuar entre plataformas.
He etiquetado la pregunta como C++, ya que este es el idioma en el que está escrito el sistema, pero estoy dispuesto a aceptar cualquier cosa que se pueda relacionar con el uso de C++. ¡Cualquier idea (incluyendo cambios arquitectónicos salvajes) es bienvenida!
Actualización:
Un ejemplo de lo que sería interesante poder lograr:
Un usuario se registra en la máquina 1, que es una máquina Windows.
Usuario A Abre la interfaz administrativa del sistema, selecciona la máquina 2 (un sistema Linux) y ajusta una configuración. El sistema verifica que el usuario A tenga de hecho suficientes privilegios para poder hacer esto.
Dado que A ya verificó su identidad cuando inició sesión, sería deseable permitirle cambiar esta configuración sin tener que proporcionar credenciales adicionales.
¿Existe ya una base de datos central de usuarios que deben ser reutilizado? –
@free_easy: No, el sistema no tiene ningún manejo del usuario en este momento. Me gustaría utilizar las cuentas de usuario existentes si es posible, es decir, inicio de sesión único. – villintehaspam
¿Dónde se almacenan las cuentas de usuario existentes? (Active Directory, LDAP, base de datos) –