visual usuarios usuario tutorial tipos permisos net mvc con autenticación autenticacion asp asp.net active-directory authorization

asp.net - usuarios - Autenticación de Active Directory con autorización basada en roles locales



login y autenticación de tipos de usuario con visual c# y sql server (2)

Actualmente estoy implementando una solución similar. Así es como funciona la aplicación. Estoy usando ASP.NET MVC 5, ASP.NET Identity 2.2.1.

Estoy usando el marco Identity para administrar usuarios y roles dentro de la aplicación. El usuario va a una página de inicio de sesión, ingresa sus credenciales. La aplicación comprueba contra el DB de la aplicación para ver si el usuario existe. Si no, arroja un error de que el usuario no existe en la base de datos. Si el usuario existe, se autentica contra AD. Si la autenticación falla, reciben un mensaje de error, si no falla creo una ClaimIdentity del usuario fuera de la base de datos (no el usuario en AD) y la paso a mi método SignIn.

Mi usuario en el DB de la aplicación tiene el mismo nombre de usuario que el AD y lo uso como mi stub. También incluyo el dominio del usuario en la base de datos también en el caso de que tenga múltiples dominios que necesito admitir. Con Identity, no olvide incluir también el campo SecurityStamp con un guid.

El plan es importar a granel los usuarios y los permisos desde una hoja de cálculo y tengo algunas acciones CRUD estándar creadas para permitir la creación de usuarios individuales y la asignación de roles después de eso.

Estoy desarrollando una aplicación ASP.NET MVC. Necesito admitir múltiples mecanismos de autenticación (esta aplicación es utilizada por múltiples clientes, cada uno con su propio proveedor de autn preferido). Un proveedor de autenticación será Active Directory. La integración de AD para la autenticación es sencilla y no tengo problemas con eso.

Para la autorización, los roles se almacenarán en una base de datos local (NOTA: no podemos usar grupos de Active Directory para realizar autorizaciones; los roles deben ser roles de aplicaciones locales porque admitimos múltiples proveedores de authn y los administradores de AD no querrán crear grupos personalizados en AD solo para nuestra aplicación). Mi expectativa es que tendremos que crear cuentas de usuario "stub" en nuestra base de datos local para realizar la asignación User-is-assigned-which-Roles. Estas cuentas de usuario de stub también se usarán para indicar qué usuarios están autorizados a acceder a la aplicación (no todos los usuarios de la base de datos de AD deben tener acceso).

El flujo de control anticipado será:

  1. El usuario accede a la página de inicio de sesión> ingresa las credenciales> publica las credenciales en el servidor de la aplicación.
  2. La aplicación valida las credenciales contra AD. En este punto, sabemos si el usuario está autenticado.
  3. La aplicación verifica el SID del usuario para ver si existe una cuenta de usuario "stub" con ese SID en la base de datos local. De lo contrario, la aplicación muestra un mensaje de error "no autorizado" para el usuario.
  4. La aplicación buscará roles para el usuario en la tabla de la base de datos local user-is-assigned-which-roles.

La información de identidad del usuario, incluidos los roles, se almacenará como reclamos y la aplicación utilizará la autorización típica basada en reclamos (es decir, ClaimsAuthorizationManager).

Mi pregunta es ¿cuál es la mejor manera de crear cuentas de usuario "stub" en mi base de datos local? Supongo que deberíamos usar algún tipo de script de exportación AD para exportar cuentas AD para aquellos usuarios a los que se debe otorgar acceso a la aplicación ASP.NET y luego importar esos usuarios a la base de datos local (NOTA: espero que la cuenta del apéndice contiene información mínima, quizás solo el SID del usuario de AD y tal vez el nombre de usuario).

Una exportación / importación por lotes probablemente sea correcta como un proceso de implementación inicial. Después de que la aplicación esté funcionando y los nuevos usuarios se unan a la organización, espero que se desee un mecanismo más fácil de usar para otorgar a un nuevo usuario acceso a nuestra aplicación (que no sea exportar / importar la cuenta del nuevo usuario de AD a nuestra base de datos local). Supongo que necesitaremos algún tipo de pantalla del navegador del usuario para que un administrador de nuestra aplicación pueda navegar por el directorio AD, seleccionar un usuario, hacer clic en un botón y luego crear automáticamente la cuenta "stub" de ese usuario en nuestra aplicación.

¿Alguien ha implementado una aplicación con requisitos similares? Si es así, ¿cómo se inició la creación de cuentas "stub" en su base de datos local? ¿Hay una mejor manera de abordar estos requisitos?


Siéntase libre si esto puede ayudarlo. Autorización de anotación personalizada

Es solo una solución, o simplemente una idea, no una solución ...

Para usarlo, solo necesita usar Anotación en el controlador, por ejemplo

[ARQAuthorize] public class BlaBlaController : Controller .....