visual studio net mvc implement asp active asp.net-mvc asp.net-mvc-2 asp.net-mvc-3 forms-authentication windows-authentication

asp.net-mvc - studio - windows authentication c#



ASP.NET MVC: autentica a los usuarios contra Active Directory, pero requiere el nombre de usuario y la contraseƱa para ingresar (2)

Como se mencionó anteriormente, puede usar el proveedor de membresía definido en el archivo web.config.

El siguiente código se encuentra dentro de la implementación del ''AccountController'' del código de la plantilla de MVC 3 y se ha modificado ligeramente para que funcione con ActiveDirectory:

[HttpPost] public ActionResult LogOn( LogOnModel model, string returnUrl ) { if( ModelState.IsValid ) { // Note: ValidateUser() performs the auth check against ActiveDirectory // but make sure to not include the Domain Name in the User Name // and make sure you don''t have the option set to use Email Usernames. if( MembershipService.ValidateUser( model.UserName, model.Password ) ) { // Replace next line with logic to create FormsAuthenticationTicket // to encrypt and return in an Http Auth Cookie or Session Cookie // depending on the ''Remember Me'' option. //FormsService.SignIn( model.UserName, model.RememberMe ); // Fix this to also check for other combinations/possibilities if (!String.IsNullOrEmpty(returnUrl)) { return Redirect(returnUrl); } else { return RedirectToAction("Index", "Home"); } } else { ModelState.AddModelError("", "The user name or password provided is incorrect."); } }

Si usa .NET 3.5, lea este artículo para la alternativa:

Estoy desarrollando una aplicación MVC3 que requerirá que un usuario sea autenticado contra un AD. Sé que existe la opción en MVC3 de crear una Aplicación de Intranet que autentique automáticamente a un usuario contra un AD, pero usa la Autenticación de Windows y los inicia automáticamente. Se puede acceder a esta aplicación en estaciones de trabajo ''Abiertas'' donde el usuario deberá ingresar su Nombre de usuario y Contraseña de Dominio. Cualquier ejemplo o tutorial en línea sería genial. Un proyecto de ejemplo sería excepcional.


Puede usar la plantilla de aplicación de Internet estándar con autenticación de formularios e insertar un ActiveDirectoryMembershipProvider en web.config :

<connectionStrings> <add name="ADConnectionString" connectionString="LDAP://YOUR_AD_CONN_STRING" /> </connectionStrings> <system.web> <authentication mode="Forms"> <forms name=".ADAuthCookie" loginUrl="~/Account/LogOn" timeout="15" slidingExpiration="false" protection="All" /> </authentication> <membership defaultProvider="MY_ADMembershipProvider"> <providers> <clear /> <add name="MY_ADMembershipProvider" type="System.Web.Security.ActiveDirectoryMembershipProvider" connectionStringName="ADConnectionString" attributeMapUsername="sAMAccountName" /> </providers> </membership> </system.web>

De esta forma, obtiene el formulario de inicio de sesión de la plantilla de la aplicación de Internet, y se valida contra AD por usted.

Entonces solo es cuestión de limpiar un AccountController para eliminar la contraseña de reinicio / cambiar la contraseña / registrar la funcionalidad, simplemente dejando Login.