none
Autenticar un usuario a nivel de código desde la máquina cliente en el servidor.

    Question

  • Hola gente como están?

    Ocupo de sus buenos conocimientos para resolver otro problema. Este está interesante.

    Estoy desarrollando un aplicación en ASP.NET, que debe correr en un servidor Microsoft Server 2008 R2, y en SQL Server 2008 y con IIS 7 y a nivel de intranet. Ah y desarrollo en VB.

    La situación es esta, cuando un usuario ingresa al SO debe autenticarse contra el Active Directory empresarial, cuando entra al sitio web que estoy desarrollando, el sitio debe capturar por debajo el nombre de usuario de esa máquina que esta entrando(que sería el usuario de active directory de esa persona), revisar en la bd del sistema (que esta implantado en el server), si ese usuario existe y si tiene permiso de ingresar al sitio.

    Actualmente para obtener el nombre de usuario uso esta instrucción Environment.UserName, pero esta instrucción, a nivel local (cuando lo corro en visual studio) me sirve, ya que me captura el usuario de mi máquina, pero cuando publico el sitio en el IIS del server no sirve, ya que cualquier usuario que redireccione al sitio, el sistema lo lee como si fuera el usuario del server, en otras  palabras, si el server se llama SERVER, y los usuarios A, B y C entran, el programa reconoce a esos usuarios como SERVER los 3 y no como A, B o C según corresponda.

    Estuve viendo algunas páginas pero no encontre mucho. Esta página esta algo buena pero no para lo que realmente ocupo:

    http://www.asp.net/mvc/tutorials/authenticating-users-with-windows-authentication-vb

    ya que aquí el usuario tendría que volver a autenticarse y además quedo igual porque no puedo identificar a nivel de mi sistema quién es el que entra.

    No se si el problema estará a nivel de sistema,a nivel de IIS o que, pero les agradezco si me pueden ayudar a ver como hago para capturar el nombre de usuario de la maquina cliente y reconocerlo en la maquina server.

     

    Saludos y gracias!

     

    Thursday, October 13, 2011 4:20 PM

All replies

  • Haz dos cambios:

    Primero, en la configuración de tu aplicación en IIS, habilita el modo de autenticación "Windows Auhthentication" y deshabilita "Anonymous".

    Segundo, en el web.config, asegúrate de que <authentication> está configurado como "Windows" (creo que es el valor predeterminado si no pones nada).

    Tercero, en lugar de Environment.UserName, utiliza User.Identity.Name. Para que te tomara el Environment.UserName tendrías que poner <identity impersonate="true"> en el web.config, pero esto tiene otras repercusiones que igual no te convienen.

     

    Sunday, October 16, 2011 5:17 PM
  • Hola Alberto, Gracias por tu respuesta.

    La forma que me recomiendas hacerla la había estado intentando estos días y de igual forma no obtuve resultados. Te explico.

    He estado intentando obtener el nombre del usuario de las siguientes maneras:

    Request.ServerVariables("LOGON_USER")
    User.Identity.Name
    HttpContext.Current.Request.LogonUserIdentity
    Environment.UserName

    Y también he interactuado cada uno de esos métodos con las diferentes maneras de ingreso/autenticación que tiene el IIS (anónimo, básico, autenticación de windows, mediante formularios, suplantación de ASP.Net). Pero aún así no me sirve.

    El modo que me sugieres esta muy bien, sin embargo tengo 2 problemas con ello, el primero es que cada vez que un usuario ingresa a la página debe estar logeandose, y en el proyecto lo solicitado es que no lo deba hacer, ya que por debajo el usuario debe, cuando ingresa al SO, autenticarse con el active directory de la empresa, y por ende accede ya autenticado contra el sistema nuestro. Segundo es que para este método que me sugieres el active directory debe estar en mi server, o mejor dicho en el server que va a correr la aplicacion, y este sistema va a correr en un server diferente al que tiene el active directory. Por ende al único usuario que me reconoce es al administrador del SO.

    Hice un par de pruebas con tu recomendación, y cuando intento ingresar desde otra computadora en intranet, me pide loggin, ingreso mi usuario de la máquina cliente y no me permite el paso, pero cuando ingreso el usuario del servidor alli si puedo entrar a la aplicación, y como verás no es lo que en este momento se necesita para el aplicativo.

     

    Te agradezco mucho tu respuesta, ojala exista algún método para poder hacerlo, sino me tocará hacer un loggin pero desde la aplicación.

    Gracias y Saludos

    Monday, October 17, 2011 3:52 PM