texto tag propiedad poner dev como c# .net identity windows-integrated-auth

tag - ¿Cómo se encuentra el nombre/identidad de los usuarios en C#



propiedad tag c# (3)

Depende del contexto de la aplicación. Puede usar Environment.UserName (consola) o HttpContext.Current.User.Identity.Name (web). Tenga en cuenta que al usar la autenticación integrada de Windows, es posible que deba eliminar el dominio del nombre de usuario. Además, puede hacer que el usuario actual use la propiedad User de la página en codebehind, en lugar de hacer referencia al contexto HTTP actual.

Necesito encontrar programáticamente el nombre de los usuarios usando C #. Específicamente, quiero que el usuario del sistema / red esté conectado al proceso actual. Estoy escribiendo una aplicación web que usa seguridad integrada de Windows.


La visión abstracta de la identidad suele ser IPrincipal / IIdentity :

IPrincipal principal = Thread.CurrentPrincipal; IIdentity identity = principal == null ? null : principal.Identity; string name = identity == null ? "" : identity.Name;

Esto permite que el mismo código funcione en muchos modelos diferentes (winform, asp.net, wcf, etc.), pero depende de que la identidad se establezca de antemano (ya que está definido por la aplicación). Por ejemplo, en un winform, puede usar la identidad de Windows del usuario actual:

Thread.CurrentPrincipal = new WindowsPrincipal(WindowsIdentity.GetCurrent());

Sin embargo, el principal también puede ser completamente personalizado: no necesariamente se relaciona con cuentas de Windows, etc. Otra aplicación podría usar una pantalla de inicio de sesión para permitir el inicio de sesión de usuarios arbitrarios:

string userName = "Fred"; // todo string[] roles = { "User", "Admin" }; // todo Thread.CurrentPrincipal = new GenericPrincipal(new GenericIdentity(userName), roles);


string user = System.Security.Principal.WindowsIdentity.GetCurrent().Name ;