net loginurl form cookie asp asp.net authentication asp.net-membership forms-authentication mixed-mode

asp.net - loginurl - web config forms authentication



autenticación de modo mixto contra AD y respaldo a la base de datos si falla con los proveedores de Membresía (2)

mi usuario usará autenticación de formulario contra Active Directory o base de datos. ¡No hay Autenticación Integrada de Windows allí!

Lo que quiero es que cuando el usuario envíe el formulario de autenticación, intente validar al usuario contra Active Directory y, si falla, intente con la base de datos.

¿Cómo puedo hacer eso? Lo que tenía en mente era crear un proveedor de membresía personalizado que encapsulara la lógica pero no estoy seguro de cómo comenzar.

hay alguna mejor idea?


Como dijiste, lo mejor es crear un proveedor de membresía personalizado para manejar esta situación.

MSDN tiene una buena descripción general de la creación de un proveedor de membresía personalizado aquí , y un excelente ejemplo de un proveedor de membresía ODBC .

Debería darte un buen comienzo.


La única forma en que podrá implementar esto es creando un proveedor personalizado.

En un mundo perfecto, puede simplemente crear un proveedor de fachada y luego aprovechar el proveedor apropiado, SQL o AD, según sea necesario, para autenticar y devolver MembershipUser al grado de integridad que considere necesario.

En el mundo real, esto aún es posible, pero tendrás que pasar por algunos aros:

  • cree su proveedor de fachada y colóquelo primero en el elemento hijo providers elemento de membership Y establézcalo como providerProvider en el elemento de membership
  • configurar correctamente un SqlMembershipProvider y un ActiveDirectoryMembershipProvider y colocarlos después de su fachada.
  • desde su fachada, acceda a los proveedores configurados desde la colección estática Membership.Providers para realizar las funciones según sea necesario.

Puede encontrar que necesita repetir este patrón si necesita usar roles y, mientras sea aplicable, la implementación será un poco más compleja y más allá del alcance de esta publicación.

Alternativamente, el código fuente completo para los proveedores de SQL se puede encontrar aquí y es un excelente punto de partida y guía para implementar un proveedor personalizado de grado industrial.

Sugeriría primero explorar el camino de menor resistencia (y menos trabajo y dolor de cabeza) y resaltar una fachada antes de intentar implementar una característica de seguridad personalizada desde cero.

Buena suerte.