Obtener usuario que realiza una petición al controller
-
miércoles, 23 de noviembre de 2011 23:16
Hola,
En mi aplicación MVC 2, estoy intentando obtener el usuario que realiza la petición a mi controller, para ello he encontrado la siguiente propiedad:
HttpContext.User.Identity.Name
El caso es que en localhost, funciona y me devuelve mi usuario del PC con el dominio al que pertenece al estilo DOMINIO\\usuario. Esto a mi ya me sirve y es lo que necesito. Pero al publicar la aplicación el servidor no obtiene nada.Entonces este comportamiento se puede llegar a conseguir o estoy pidiendo algo imposible?
En resumen, lo que necesito es obtener el nombre de usuario que hace la petición.
Gracias.
Vota mi respuesta si te ha sido útil. Gracias.
Todas las respuestas
-
jueves, 24 de noviembre de 2011 9:04
Buenas!
Que tipo de autenticación usas?
ASP.NET MVC usa el mismo mecanismo de autenticación que ASP.NET Webforms, lo que a grandes rasgos (y simplificando mucho) se divide en:
- Autenticación integrada: Las peticiones se realizan en función del usuario logado en windows.
- Autenticación por formulario: El usuario debe identificarse antes mediante login/pwd en un formulario.
El primer caso es ideal para intranets, ya que requiere que el usuario tenga una cuenta en el dominio sobre el cual corre IIS.
El segundo caso es para internet, donde el usuario no tiene una cuenta de dominio asociada.
La autenticación que se use es una combinación que depende de:
- La configuración de IIS
- Y la configuración (web.config) de ASP.NET
Si User.Identity.Name te devuelve el usuario de tu dominio significa que estás usando autenticación integrada. Esto a nivel de ASP.NET se traduce en que en el web.config tendrás algo como:
<system.web> <authentication mode="Windows"/> </system.web>
Ahora si en servidor NO te funciona (te devuelve null) verifica que IIS esté configurado SIN acceso anónimo y que usa "Integrated Windows Authenticartion". Por supuesto IIS debe estar en el mismo dominio que el cliente.
Te dejo un enlace que lo explica todo un poco bastante bien: http://msdn.microsoft.com/en-us/library/ff647405.aspx
Un saludo!
Eduard Tomàs Blog: http://geeks.ms/blogs/etomas -- Twitter: eiximenis- Marcado como respuesta Eder CostaOwner jueves, 18 de octubre de 2012 14:39
-
jueves, 24 de noviembre de 2011 13:40
Hola Eduard,
Es decir, que no es posible que teniendo un IIS remoto, identificar el nombre de usuario de la máquina del cliente que hace la petición no?
Habria algun modo de identificar al usuario u otro dato significativo de quien hace la petición?
Vota mi respuesta si te ha sido útil. Gracias. -
jueves, 24 de noviembre de 2011 14:24
MMmm... no soy un experto en temas de seguridad, pero a bote pronto te diria que no.
Si estás desarrollando una aplicación internet se suele pedir al usuario que se identifique él (típica página de login y pwd). Si quieres evitar eso y el usuario se identifique automáticamente según su usuario de dominio entonces el IIS debe estar en el mismo dominio que el usuario.
¿Cual es tu necesidad exactamente?
Un saludo!
Eduard Tomàs Blog: http://geeks.ms/blogs/etomas -- Twitter: eiximenis -
jueves, 24 de noviembre de 2011 15:48
Pues el tema es que queria (no por necesidad) realizar un seguimiento de los accesos que realizan los usuarios en una aplicacion y guardar información entre ellos el nombre de usuario.
Pero claro, deberia de ser algo transparente y en la aplicación no hay seguridad ni nada que identifique al usuario.
Gracias de todos modos
Vota mi respuesta si te ha sido útil. Gracias. -
jueves, 24 de noviembre de 2011 15:50
Pero...
Los usuarios se identifican en algun momento en esta aplicación? O bien está toda abierta?
Una cosa que si que puedes hacer es establecer una cookie, con un GUID tuyo. De ese modo podràs seguir los accesos de un mismo usuario porque tendrá la cookie con este GUID. Con esto puedes saber que dos o más peticiones vienen del mismo usuario, pero NO puedes saber que usuario es.
También es un mecanismo frágil (el usuario puede borrar cookies, usar varios navegadores,...), pero si la aplicación está totalmente abierta no se me ocurre nada más...
Saludos!
Eduard Tomàs Blog: http://geeks.ms/blogs/etomas -- Twitter: eiximenis- Marcado como respuesta Eder CostaOwner jueves, 18 de octubre de 2012 14:39
-
jueves, 24 de noviembre de 2011 19:03
Si, esta totalmente abierta.
En fin, gracias por tu ayuda; ya sabia que no se podría pero lo pregunte por si a alguien se le ocurría alguna manera.
Vota mi respuesta si te ha sido útil. Gracias.

