Is there a way to get a list of roles a Windows authenticated user is in, without explicitly checking by WindowsPrincipal.IsInRole
method?
WindowsPrincipal.IsInRole
just checks if the user is a member of the group with that name; a Windows Group is a Role. You can get a list of the groups that a user is a member of from the WindowsIdentity.Groups
property.
You can get WindowsIdentity
from your WindowsPrincipal
:
WindowsIdentity identity = WindowsPrincipal.Identity as WindowsIdentity;
or you can get it from a factory method on WindowsIdentity:
WindowsIdentity identity = WindowsIdentity.GetCurrent();
WindowsIdenity.Groups
is a collection of IdentityReference
which just gives you the SID of the group. If you need the group names you will need to translate the IdentityReference
into an NTAccount
and get the Value:
var groupNames = from id in identity.Groups select id.Translate(typeof(NTAccount)).Value;
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With