When your project is based on Windows authentication you can access some additional information about the currently authenticated user by casting the general identity object to a WindowsIdentity object. The next table lists additional members provided by WindowsIdentity:
Member
Description
IsAnonymous
Returns true if the user is anonymous (has not been authenticated).
IsGuest
Returns true if the user is using a Guest account. Guest accounts are designed for public access and do not confer many privileges
IsSystem
This property returns true if the user account has the Act As Part of the Operating System permission, which means it is a highly privileged system account.
Groups
Retrieves a collection that contains instances of IdentityReference classes, which returns the SID values for the groups the user is in.
Token
This property returns the Windows account token for the identity.
Owner
Gets the SID for the token owner.
User
Gets the user’s SID. You can use this SID if you want to change permissions for this user on ACLs through the classes provided in the System.Security.AccessControl namespace.
Impersonate()
You can use this method to run a code under the corresponding Windows account.
GetAnonymous()
This static method creates a WindowsIdentity that represents an anonymous user.
GetCurrent()
This static method creates a WindowsIdentity that represents the identity tied to the current security context i.e. the user whose identity the current code is running under. By using this method in an ASP.NET application, you can retrieve the user account under which the code is running, not the user account that was authenticated by IIS and is provided in the User object.
You can use the next code line if you want to display extra Windows-specific information about the user:
if (Request.IsAuthenticated)
{
lblInfoText.Text = “<b>Name: </b>” + User.Identity.Name;
WindowsIdentity identity = (WindowsIdentity)User.Identity;
lblInfoText.Text += “<br><b>Token: </b>”;
lblInfoText.Text += identity.Token.ToString();
lblInfoText.Text += “<br><b>Guest? </b>”;
lblInfoText.Text += identity.IsGuest.ToString();
lblInfoText.Text += “<br><b>System? </b>”;
lblInfoText.Text += identity.IsSystem.ToString();
}
The next picture shows the result:
Showing Windows-specific user information in C#

Showing Windows-specific user information in C#