¿Puedo usar Active Directory para seguridad a nivel de usuario en una aplicación de Access? ¿Bastante por favor?

¿Puedo usar Active Directory para seguridad a nivel de usuario en una aplicación de Access? ¿Bastante por favor?

Mi empresa hace un uso bastante extensivo de una aplicación Access + MySQL que probablemente generaría un tráfico significativo en el Daily WTF si publicara el código fuente. La gestión de usuarios y sus permisos se está yendo de las manos, y parece que dedico cada vez más tiempo a modificarlos o intentar descubrir por qué alguien no puede ver lo que se supone que debe ver.

Originalmente fue configurado para ser utilizado por tres usuarios en un almacén. Ahora lo utilizan más de veinte usuarios en cuatro estados, y pronto se agregarán más, y las funciones se han agregado en una proporción aproximada de 10 a 1 con los usuarios... La aplicación principal real no es mala, pero administrar Los usuarios son un fastidio. Access constituye una buena interfaz para los datos en sí, que se almacenan en un servidor MySQL en nuestra oficina central. Los usuarios tienen cajas VPN de Cisco en sucursales satélite, y eso también ha sido sólido. El alcance ha pasado de un simple registro de envío de almacén a un CRM/ERP completo... bueno, no creo que se pueda llamar a esto una solución. Quizás una emulsión. Si tuviera el presupuesto, llamaría a SAP y les diría que lo hicieran. Me temo que eso está fuera de lo posible en el futuro previsible.

Siguiendo las instrucciones de Google (no siempre es lo más seguro), utilicé el 'Asistente de seguridad a nivel de usuario' en Access para asignar nombres de usuario y contraseñas a varios usuarios, lo cual estuvo bien cuando comencé con 4-5 usuarios en total y 3 usuarios activos. . Pero ahora es bastante difícil de manejar. Mi deseo más profundo es que haya alguna manera de autenticar a los usuarios y asignar roles privilegiados según el nombre de usuario y la contraseña de Active Directory. Me han dicho que eso es imposible. Algunas búsquedas en Google no arrojaron nada destacable.

Supongo que debería ser posible obtener algún tipo de marco de autenticación usando Active Directory porque VBA tiene enlaces a todo tipo de API en Windows. Sin embargo... ¿vale la pena el tiempo y la molestia? ¿Alguien ha logrado que esto funcione alguna vez, o puedo hacer estallar no solo mi aplicación digna de WTF sino también el dominio?

Respuesta1

Sé que es posible hacerlo, pero muy pocos desarrolladores de Access parecen estar haciéndolo. Si alguien más escribiera el código, lo usaría yo mismo, pero no lo necesito lo suficiente para escribirlo yo mismo.

El concepto clave es que puede acceder a la información de AD mediante una consulta LDAP utilizando ADO. No hay forma de hacer cumplir los permisos en los objetos de Access con eso, pero ciertamente podría controlar el flujo/presentación de la aplicación según la membresía de AD. Vereste hilocomo punto de partida. Además, hayuna base de conocimientos de MSartículo sobre esto que explica el enfoque LDAP.

Por cierto, siempre que no necesite funciones específicas de AD (como unidades organizativas), no necesita utilizar AD en absoluto. Puede utilizar llamadas API regulares para obtener información sobre la membresía del grupo. Veresta publicación de Stackoverflowpara algún código que sugiera la dirección a seguir (no puedo verificar ese código, ya que parece bastante elíptico, es decir, no es una declaración de API, pero proporciona el concepto básico).

Respuesta2

No es posible interactuar directamente con AD en ese nivel. Lo mejor que podría hacer directamente es asignar permisos de archivos según las cuentas de AD. Se necesitaría un poco de esfuerzo para lograrlo a través de VBA, pero ciertamente no está fuera del alcance de la comprensión. Yo diría que deberías hacer un análisis de retorno de la inversión bastante sólido antes de abordarlo.

información relacionada