Saltar al contenido

Configurar ASP.NET MVC para la autenticación contra AD

Solución:

Autenticación de formularios

Puede usar la autenticación de formularios normales para autenticar a un usuario contra un Active Directory, para eso solo necesita su cadena de conexión AD:

<connectionStrings>
  <add name="ADConn" connectionString="LDAP://YourConnection" />
</connectionStrings>

y agregue el proveedor de membresía para usar esta conexión:

<membership defaultProvider="ADMembership">
  <providers>
    <add name="ADMembership"
         type="System.Web.Security.ActiveDirectoryMembershipProvider,
               System.Web,
               Version=2.0.0.0, 
               Culture=neutral,
               PublicToken=b03f5f7f11d50a3a"
         connectionStringName="ADConn"
         connectionUsername="domain/user"
         connectionPassword="pwd" />
  </providers>
</membership>

necesitarás usar [email protected] para autenticar correctamente al usuario.

Aquí hay algo para empezar

  • http://helios.ca/2009/05/04/aspnet-mvc-forms-authentication-with-active-directory/

Autenticación de Windows

Si comienza su proyecto de nuevo, siempre puede seleccionar Aplicación de intranet de la plantilla y todo está cuidado por ti

ingrese la descripción de la imagen aquí

Si desea hacerlo manualmente, debe cambiar:

  1. Habilitar la autenticación de Windows
  2. Deshabilitar la autenticación anónima

para obtener información detallada sobre cómo hacer esto en IIS7 / 8 e IISExpress:

IIS 7 y IIS 8

  1. Abra el Administrador de IIS y navegue hasta su sitio web.
  2. En la vista Características, haga doble clic en Autenticación.
  3. En la página Autenticación, seleccione Autenticación de Windows. Si la autenticación de Windows no es una opción, deberá asegurarse de que la autenticación de Windows esté instalada en el servidor.

    Para habilitar la autenticación de Windows en Windows:
    a) En el Panel de control, abra “Programas y características”.
    B) Seleccione “Activar o desactivar las funciones de Windows”.
    C) Navegue a Internet Information Services> World Wide Web Services> Seguridad y asegúrese de que el nodo de autenticación de Windows esté marcado.

    Para habilitar la autenticación de Windows en Windows Server:
    a) En el Administrador del servidor, seleccione Servidor web (IIS) y haga clic en Agregar servicios de función
    B) Vaya a Servidor web> Seguridad y asegúrese de que el nodo de autenticación de Windows esté marcado.

  4. En el panel Acciones, haga clic en Habilitar para usar la autenticación de Windows.

  5. En la página Autenticación, seleccione Autenticación anónima.
  6. En el panel Acciones, haga clic en Deshabilitar para deshabilitar la autenticación anónima.

IIS Express

  1. Haga clic derecho en el proyecto en Visual Studio y seleccione Usar IIS Express.
  2. Haga clic en su proyecto en el Explorador de soluciones para seleccionar el proyecto.
  3. Si el panel Propiedades no está abierto, ábralo (F4).
  4. En el panel Propiedades de su proyecto: a) Establezca “Autenticación anónima” en “Desactivada”. b) Establezca “Autenticación de Windows” en “Activado”.

En tus web.config tener algo como

<system.web>
  <authentication mode="Windows" />

  <authorization>
    <deny users="?" />
  </authorization>
</system.web>

¡y eso es!

Ahora, cuando desee la identidad del usuario, simplemente llame

@User.Identity.Name

y esto te mostrará el DomainUsername como para mí :

ingrese la descripción de la imagen aquí

Aquí hay algo para empezar

  • http://www.asp.net/mvc/tutorials/older-versions/security/authenticating-users-with-windows-authentication-cs

Aquí hay una solución del tutorial Chris Schiffhauer – Implementar la autenticación de Active Directory en ASP.NET MVC 5:

Puede proteger su aplicación web MVC en una red de Active Directory autenticando a los usuarios directamente con sus credenciales de dominio.

PASO 1: CONTROLADOR DE CUENTAS.CS

Reemplaza tu AccountController.cs archivo con lo siguiente:

using System.Web.Mvc;
using System.Web.Security;
using MvcApplication.Models;

public class AccountController : Controller
{
    public ActionResult Login()
    {
        return this.View();
    }

    [HttpPost]
    public ActionResult Login(LoginModel model, string returnUrl)
    {
        if (!this.ModelState.IsValid)
        {
            return this.View(model);
        }

        if (Membership.ValidateUser(model.UserName, model.Password))
        {
            FormsAuthentication.SetAuthCookie(model.UserName, model.RememberMe);
            if (this.Url.IsLocalUrl(returnUrl) && returnUrl.Length > 1 && returnUrl.StartsWith("https://foroayuda.es/")
                && !returnUrl.StartsWith("//") && !returnUrl.StartsWith("/\"))
            {
                return this.Redirect(returnUrl);
            }

            return this.RedirectToAction("Index", "Home");
        }

        this.ModelState.AddModelError(string.Empty, "The user name or password provided is incorrect.");

        return this.View(model);
    }

    public ActionResult LogOff()
    {
        FormsAuthentication.SignOut();

        return this.RedirectToAction("Index", "Home");
    }
}

PASO 2: CUENTAVIEWMODELS.CS

Actualiza tu AccountViewModels.cs (o cualquiera que sea el nombre de su clase de modelo de cuenta) para contener solo esta clase de LoginModel:

using System.ComponentModel.DataAnnotations;

public class LoginModel
{
    [Required]
    [Display(Name = "User name")]
    public string UserName { get; set; }

    [Required]
    [DataType(DataType.Password)]
    [Display(Name = "Password")]
    public string Password { get; set; }

    [Display(Name = "Remember me?")]
    public bool RememberMe { get; set; }
}

PASO 3: CONFIGURACIÓN WEB

Finalmente, actualice su Web.config archivo para incluir estos elementos.

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.web>
      <authentication mode="Forms">
          <forms name=".ADAuthCookie" loginUrl="~/Account/Login" timeout="45" slidingExpiration="false" protection="All" />
      </authentication>
      <membership defaultProvider="ADMembershipProvider">
          <providers>
              <clear />
              <add name="ADMembershipProvider" type="System.Web.Security.ActiveDirectoryMembershipProvider" connectionStringName="ADConnectionString" attributeMapUsername="sAMAccountName" />
          </providers>
      </membership>
  </system.web>
  <connectionStrings>
      <add name="ADConnectionString" connectionString="LDAP://primary.mydomain.local:389/DC=MyDomain,DC=Local" />
  </connectionStrings>
</configuration>

Es posible que se necesiten algunos pasos para obtener su cadena de conexión LDAP:

  1. Instale las herramientas de administración remota del servidor para Windows 7. Asegúrese de seguir las instrucciones posteriores a la instalación para agregar la función a Windows a través del panel de control.

  2. Abra un símbolo del sistema e ingrese >dsquery server

    Digamos que el comando devuelve lo siguiente:

    CN=PRIMARY,CN=Servers,CN=DefaultFirstName,CN=Sites,CN=Configuration,DC=MyDomain,DC=Local
    
    • El nombre del servidor se compone del primer valor CN y los dos últimos valores DC, separados por puntos. Entonces es primary.mydomain.local.

    • El puerto es 389.

    • La parte de la cadena de conexión después del puerto y la barra diagonal es la parte del resultado que comienza con la primera "DC". Entonces es DC=MyDomain,DC=Local.

    • Entonces la cadena de conexión completa es

      LDAP://primary.mydomain.local:389/DC=MyDomain,DC=Local.
      
    • Los usuarios iniciarán sesión usando solo su nombre de usuario sin el dominio. Entonces, el nombre de usuario correcto es Chris, no MYDOMAIN Chris.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *