none
Gestion de usuario "manual" o active directory?

    Question

  •  

    Hola a todos,

    tengo una duda existencial ...no he podido probar active directory y me gustaría saber qué me puede ir mejor en la gestion de usuario de mi aplicacion web:

     

    Tengo que hacer una aplicacion web (asp.net) con usuarios de diferentes roles. En la aplicacion se utilizará estructura de carpetas para informes y he pensado utilizar active directory. Mi duda es si para validar el usuario en la aplicacion puedo utilizar la misma gestion de usuarios de AD o de Windows. Sé que en el IIS puedo configurar la web para restringir acceso, pero querría saber si puedo detectar a qué grupo pertenece este usuario para diferenciar roles, y si estos usuarios puedes ser los mismo que en el AD. A todo, diria que sí, que debe poderse integrar, pero como no sé cómo hacerlo prefiero no asegurarlo.

     

    Muchas gracias,

     

    Diego Torres

    Wednesday, January 09, 2008 12:12 PM

Answers

  • Hola,

     

    pues puedes acceder facilmente desde .net al directorio activo.

     

    para ello se usa el protocolo LDAP

     

    aqui te dejo un ejemplo:

     

    http://www.netveloper.com/contenido2.aspx?IDC=191_0&IDP=2&P=190

     

    puedes buscar mas informacion sobre como usar el ldap en google

     

    un saludo.

    Wednesday, January 09, 2008 12:42 PM
    Moderator
  • Muy buenas,

     

    En principio no tienes problema para identificar al usuario desde el código. Si marcas la seguridad del directorio de IIS para que no se permita el acceso anónimo, y que la autenticación se realice a través del directorio activo, en cualquier página de tu aplicación web podrás obtener el usuario que se ha conectado a través de la propiedad Request de la página.

     

    Por ejemplo, en la página maestra puedes tener algo así:

     

    Bloque de código

    if (this.Request.IsAuthenticated)

    {

       WindowsIdentity cliente = this.Request.LogonUserIdentity;

    }

    else

    {

       this.Response.Redirect("~/login.aspx");

    }

     

     

    A partir de esta identidad, ya le puedes preguntar al directorio activo. Para ello puedes usar el namespace System.DirectoryServices. Un ejemplo de uso lo puedes ver aquí:

     

    http://msdn2.microsoft.com/en-us/library/ms973834.aspx

     

    Saludos!

    Wednesday, January 09, 2008 12:46 PM
  • El implementar el control de acceso de forma manual lleva consigo una serie de consideraciones que hay que tener en cuenta:

    • Es imprescindible que la aplicación vaya sobre https, para evitar que las contraseñas viajen en texto plano.
    • Hay que considerar cómo y dónde almacenar las claves del usuario.
    • El hecho de desarrollarlo a mano implica que pueden aparecer más puntos por donde atacar la aplicación.

    Yo personalmente me inclinaría sin dudarlo por la opción del Active Directory. Si en principio todos los clientes acceden desde máquinas con Windows (Vista es completamente compatible con el AD), y en tu organización se accede desde una intranet a la aplicación no tendrás ningún problema.

     

    Ojo, si la aplicación es cara al público (me refiero con esto a que se acceda por internet y la gente que accede no está dada de alta en un Active Directory), la opción del Active Directory podría no ser la más adecuada, ya que los usuarios hay que introducirlos en el Active Directory.

     

    El esquema que elijas impactará tanto a los clientes como al servidor. En el servidor configurarás el acceso a los directorios del web de una manera u otra (con acceso anónimo o no, por ejemplo), y los clientes si optas por Active Directory deberán ser usuarios del dominio.

     

    Hay otras posibilidades, ya que el Membership del framework 2.0 tiene diversos proveedores (autenticación por forms, cardspace, active directory...). Puedes leer más sobre el tema aquí:

     

    http://msdn2.microsoft.com/en-us/library/aa479031.aspx (Membership providers)

    http://msdn2.microsoft.com/en-us/library/aa302415.aspx (seguridad en aplicaciones .NET)

     

    Saludos!
    Thursday, January 10, 2008 10:16 AM

All replies

  • Hola,

     

    pues puedes acceder facilmente desde .net al directorio activo.

     

    para ello se usa el protocolo LDAP

     

    aqui te dejo un ejemplo:

     

    http://www.netveloper.com/contenido2.aspx?IDC=191_0&IDP=2&P=190

     

    puedes buscar mas informacion sobre como usar el ldap en google

     

    un saludo.

    Wednesday, January 09, 2008 12:42 PM
    Moderator
  • Muy buenas,

     

    En principio no tienes problema para identificar al usuario desde el código. Si marcas la seguridad del directorio de IIS para que no se permita el acceso anónimo, y que la autenticación se realice a través del directorio activo, en cualquier página de tu aplicación web podrás obtener el usuario que se ha conectado a través de la propiedad Request de la página.

     

    Por ejemplo, en la página maestra puedes tener algo así:

     

    Bloque de código

    if (this.Request.IsAuthenticated)

    {

       WindowsIdentity cliente = this.Request.LogonUserIdentity;

    }

    else

    {

       this.Response.Redirect("~/login.aspx");

    }

     

     

    A partir de esta identidad, ya le puedes preguntar al directorio activo. Para ello puedes usar el namespace System.DirectoryServices. Un ejemplo de uso lo puedes ver aquí:

     

    http://msdn2.microsoft.com/en-us/library/ms973834.aspx

     

    Saludos!

    Wednesday, January 09, 2008 12:46 PM
  • Muchas gracias a los dos (Javier y Augusto). Imaginaba que se podría hacer algo de lo que deciis...pero vosotros qué haríais? Este tipo de validación o una manual? Lo más cómodo sería por AD, pero me temo tener alguna incompatibilidad...dará igual si uso Vista? Para el tema web entiendo que sí, ya que se ejecuta en servidor, pero para el tema AD? Entiendo que no debería de dar problemas...pero claro...

    Wednesday, January 09, 2008 2:41 PM
  • El implementar el control de acceso de forma manual lleva consigo una serie de consideraciones que hay que tener en cuenta:

    • Es imprescindible que la aplicación vaya sobre https, para evitar que las contraseñas viajen en texto plano.
    • Hay que considerar cómo y dónde almacenar las claves del usuario.
    • El hecho de desarrollarlo a mano implica que pueden aparecer más puntos por donde atacar la aplicación.

    Yo personalmente me inclinaría sin dudarlo por la opción del Active Directory. Si en principio todos los clientes acceden desde máquinas con Windows (Vista es completamente compatible con el AD), y en tu organización se accede desde una intranet a la aplicación no tendrás ningún problema.

     

    Ojo, si la aplicación es cara al público (me refiero con esto a que se acceda por internet y la gente que accede no está dada de alta en un Active Directory), la opción del Active Directory podría no ser la más adecuada, ya que los usuarios hay que introducirlos en el Active Directory.

     

    El esquema que elijas impactará tanto a los clientes como al servidor. En el servidor configurarás el acceso a los directorios del web de una manera u otra (con acceso anónimo o no, por ejemplo), y los clientes si optas por Active Directory deberán ser usuarios del dominio.

     

    Hay otras posibilidades, ya que el Membership del framework 2.0 tiene diversos proveedores (autenticación por forms, cardspace, active directory...). Puedes leer más sobre el tema aquí:

     

    http://msdn2.microsoft.com/en-us/library/aa479031.aspx (Membership providers)

    http://msdn2.microsoft.com/en-us/library/aa302415.aspx (seguridad en aplicaciones .NET)

     

    Saludos!
    Thursday, January 10, 2008 10:16 AM
  • Muchas gracias!! me ha sido muy util esta informacion!

     

    Thursday, January 10, 2008 10:24 AM