Revision: 59157
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at August 21, 2012 15:39 by toLL
Initial Code
// get current user identity
WindowsIdentity id = WindowsIdentity.GetCurrent();
var useName = id.Name;
var authType = id.AuthenticationType;
// all user groups (1)
foreach (var group in id.Groups)
{
// get SID of group
Console.WriteLine(group.Value);
// translate group SID to name
Console.WriteLine(group.Translate(typeof(NTAccount)));
}
// all user groups (2 - better performance)
foreach (var group in id.Groups.Translate(typeof(NTAccount)))
{
Console.WriteLine(group);
}
// convert to SID (Security Identifier)
NTAccount account = new NTAccount(id.Name);
var sid = account.Translate(typeof(SecurityIdentifier)));
// get principal
WindowsPrincipal principal = new WindowsPrincipal(id);
// check if user is in role
// local admin
var localAdmins = new SecurityIdentifier(WellKnownSidType.BuiltinAdministratorsSid, null);
var hasAdminRole = principal.IsInRole(localAdmins);
// Domain admin
var domainAdmin = new SecurityIdentifier(WellKnownSidType.AccountDomainAdminsSid, id.User.AccountDomainSid);
var isDomainAdmin = principal.IsInRole(domainAdmin));
// Principal permission
new PrincipalPermission(null, "Marketing").Demand(); // throws exception if user doesn't have Marketing role
// same but as attribute
[PrincipalPermission(SecurityAction.Demand, Role="Development Group")]
private static void DoDeveloperWork()
{
Console.WriteLine("You are a developer");
}
Initial URL
Initial Description
How to get users identity and principal in C#
Initial Title
C# User Identity / Principal
Initial Tags
c#
Initial Language
C#