Número 50julio-AGOSTO 2008

Visual Basic•C#•ASP.NET•ADO.NET•AJAXSilverlight.NET Framework

dotNetManía

Revista dedicada a los profesionales de la plataforma .NET

Menú

Inicio

Números publicados

Libros

Próximo número (nº51)

Autores

¿Qué es dotNetManía?

Garantía de satisfacción

Contactar

Pedidos

Suscripciones

Renovaciones

Libros

Noticias dnm

Alhambra-Eidos llega a un acuerdo con dotNetManía para la difusión conjunta de su oferta formativa. Leer más...


Disponibles los primeros 28 números de dotNetManía en formato PDF y de libre distribución. Leer más... 

Patrocinadores

Patrocinador Oro
Microsoft

Patrocinadores Plata
Alhambra-Eidos
Solid Quality Mentors

Patrocinadores Bronce
Raona
Plain Concepts
Krasis
ABOX 

 

 

 

Nº 2 Marzo 2004  Autenticación ASP.NET a través de formulario y Active Directory Material de apoyo

Por Pedro Pozo
 

En este artículo trataremos la autenticación en ASP.NET, y explicaremos con un ejemplo práctico como autenticarse mediante formulario con Active Directory.


Cada tipo de autenticación tiene sus ventajas pero la más usada es la autenticación mediante formulario ya que nos permite controlar todo el proceso y resulta sencilla de implementar

Proyecto

Autenticacion.zip

 


 

Bibliografía

Accessing and Manipulating Active Directory with ASP.NET

 

Autor: Noel Simpson

Formato: PDF

Precio: 8$

 


 

Más información

MSDN España

Crear aplicaciones ASP .NET seguras, Cómo: Utilizar la autenticación mediante Formularios con Active Directory

 

Willy Dev

Utilizar la autenticación mediante Formularios con Active Directory

 


Código fuente

<authentication mode="Forms">

<forms name=".ASPXUSERDEMO" loginUrl="login.aspx"

protection="All"  timeout="60" />

</authentication>

 

private string pPath;

private string pDominioLdap;

 

public AutenticacionLdap(string path,string dominioLdap)

{

pPath = path;

       pDominioLdap = dominioLdap;

}

 

 

public bool Existe(string usuario, string pwd)

{

   DirectoryEntry entrada;

   DirectorySearcher buscador;

   SearchResult resultado;

 

   try

   {

    entrada = new DirectoryEntry( pPath, pDominioLdap + @"\" + usuario, pwd);

    buscador = new DirectorySearcher(entrada);

    buscador.Filter = "(SAMAccountName=" + usuario + ")";

    buscador.PropertiesToLoad.Add("cn");

    resultado = buscador.FindOne();

   

    if(resultado == null

       return false;

    else

       return true;                     

   }

   catch (Exception ex)

   {

    pError=ex.Message;

    return false;

   }

                   

}

 

Fuente 1.

 

public bool Pertenece(string grupoLdap,string usuario, string pwd,string

   usuarioLdap,string pwdLdap)

{

  string pathGrupo;

  string GrupoUsuario;

  DirectoryEntry entrada;

  DirectorySearcher buscador;

  SearchResult resultado;

 

  try

  {

    entrada = new DirectoryEntry(pPath,usuarioLdap,pwdLdap);

    buscador = new DirectorySearcher(entrada);

    buscador.Filter = "(SAMAccountName=" + usuario + ")";

    buscador.PropertiesToLoad.Add("memberOf");

 

    resultado = buscador.FindOne();

    for( int contador = 0; contador < resultado.Properties["memberOf".Count;

         contador++)

    {

       grupoLdap=grupoLdap.ToUpper() + ",";

       pathGrupo = (String)resultado.Properties["memberOf"][contador];

       GrupoUsuario= pathGrupo.ToUpper().Substring(3,grupoLdap.Length);

       if (GrupoUsuario==grupoLdap)

          return true;

    }

   }

   catch (Exception ex)

   {

       pError=ex.Message;

       return false;

   }

 

   return false;

}

 

Fuente 2.

 

public bool Pertenece(string grupoLdap,string usuario, string pwd)

{

  string pathGrupo;

  string grupoUsuario;

  DirectoryEntry entrada;

  DirectorySearcher buscador;

  SearchResult resultado;

 

  try

  {

    entrada = new DirectoryEntry(pPath,usuario,pwd);

    buscador = new DirectorySearcher(entrada);

    buscador.Filter = "(SAMAccountName=" + usuario + ")";

    buscador.PropertiesToLoad.Add("memberOf");

 

    resultado = buscador.FindOne();

    for( int contador = 0; contador < resultado.Properties["memberOf"].Count;

         contador++)

    {

       grupoLdap=grupoLdap.ToUpper() + ",";

       pathGrupo = (String)resultado.Properties["memberOf"][contador];

       grupoUsuario = pathGrupo.ToUpper().Substring(3,grupoLdap.Length);

 

       if (grupoUsuario==grupoLdap)

           return true;

    }

   }

   catch (Exception ex)

   {

       pError=ex.Message;

       return false;

   }

 

   return false;

  }

 

Fuente 3.

 

if (usuario.Existe(txtUsuario.Text,txtPwd.Text))

{

   FormsAuthentication.SetAuthCookie(txtUsuario.Text,false);

   if (usuario.Pertenece("GrupoAdministradores",txtUsuario.Text,txtPwd.Text))

       Response.Redirect("InicioAdmin.aspx");

   else if (usuario.Pertenece("GrupoUsuarios",txtUsuario.Text,txtPwd.Text))

       Response.Redirect("InicioUsuario.aspx");

}

else

{

   LblError.Text =  usuario.Error;

}

Volver
 

 

dotNetManía es una revista editada por Netalia. Más información.