Note

Access to this page requires authorization. You can try signing in or .

Access to this page requires authorization. You can try .

WindowsPrincipal Class

Definition

Namespace:
System.Security.Principal
Assembly:
System.Security.Principal.Windows.dll
Assembly:
mscorlib.dll

Important

Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.

Enables code to check the Windows group membership of a Windows user.

public ref class WindowsPrincipal : System::Security::Claims::ClaimsPrincipal
public ref class WindowsPrincipal : System::Security::Principal::IPrincipal
public class WindowsPrincipal : System.Security.Claims.ClaimsPrincipal
[System.Serializable]
public class WindowsPrincipal : System.Security.Principal.IPrincipal
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public class WindowsPrincipal : System.Security.Principal.IPrincipal
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public class WindowsPrincipal : System.Security.Claims.ClaimsPrincipal
type WindowsPrincipal = class
 inherit ClaimsPrincipal
[<System.Serializable>]
type WindowsPrincipal = class
 interface IPrincipal
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type WindowsPrincipal = class
 interface IPrincipal
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type WindowsPrincipal = class
 inherit ClaimsPrincipal
Public Class WindowsPrincipal
Inherits ClaimsPrincipal
Public Class WindowsPrincipal
Implements IPrincipal
Inheritance
WindowsPrincipal
Inheritance
WindowsPrincipal
Attributes
Implements

Examples

The following example demonstrates how to use the IsInRole method overloads. The WindowsBuiltInRole enumeration is used as the source for the relative identifiers (RIDs) that identify the built-in roles. The RIDs are used to determine the roles of the current principal.

public:
 static void DemonstrateWindowsBuiltInRoleEnum()
 {
 AppDomain^ myDomain = Thread::GetDomain();

 myDomain->SetPrincipalPolicy( PrincipalPolicy::WindowsPrincipal );
 WindowsPrincipal^ myPrincipal = dynamic_cast<WindowsPrincipal^>(Thread::CurrentPrincipal);

 Console::WriteLine( "{0} belongs to: ", myPrincipal->Identity->Name );

 Array^ wbirFields = Enum::GetValues( WindowsBuiltInRole::typeid );

 for each ( Object^ roleName in wbirFields )
 {
 try
 {
 Console::WriteLine( "{0}? {1}.", roleName,
 myPrincipal->IsInRole( *dynamic_cast<WindowsBuiltInRole^>(roleName) ) );
 }
 catch ( Exception^ ) 
 {
 Console::WriteLine( "{0}: Could not obtain role for this RID.",
 roleName );
 }
 }
 }
using System;
using System.Threading;
using System.Security.Permissions;
using System.Security.Principal;

class SecurityPrincipalDemo
{
 public static void DemonstrateWindowsBuiltInRoleEnum()
 {
 AppDomain myDomain = Thread.GetDomain();

 myDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal);
 WindowsPrincipal myPrincipal = (WindowsPrincipal)Thread.CurrentPrincipal;
 Console.WriteLine("{0} belongs to: ", myPrincipal.Identity.Name.ToString());
 Array wbirFields = Enum.GetValues(typeof(WindowsBuiltInRole));
 foreach (object roleName in wbirFields)
 {
 try
 {
 // Cast the role name to a RID represented by the WindowsBuildInRole value.
 Console.WriteLine("{0}? {1}.", roleName,
 myPrincipal.IsInRole((WindowsBuiltInRole)roleName));
 Console.WriteLine("The RID for this role is: " + ((int)roleName).ToString());
 }
 catch (Exception)
 {
 Console.WriteLine("{0}: Could not obtain role for this RID.",
 roleName);
 }
 }
 // Get the role using the string value of the role.
 Console.WriteLine("{0}? {1}.", "Administrators",
 myPrincipal.IsInRole("BUILTIN\\" + "Administrators"));
 Console.WriteLine("{0}? {1}.", "Users",
 myPrincipal.IsInRole("BUILTIN\\" + "Users"));
 // Get the role using the WindowsBuiltInRole enumeration value.
 Console.WriteLine("{0}? {1}.", WindowsBuiltInRole.Administrator,
 myPrincipal.IsInRole(WindowsBuiltInRole.Administrator));
 // Get the role using the WellKnownSidType.
 SecurityIdentifier sid = new SecurityIdentifier(WellKnownSidType.BuiltinAdministratorsSid, null);
 Console.WriteLine("WellKnownSidType BuiltinAdministratorsSid {0}? {1}.", sid.Value, myPrincipal.IsInRole(sid));
 }

 public static void Main()
 {
 DemonstrateWindowsBuiltInRoleEnum();
 }
}
Imports System.Threading
Imports System.Security.Permissions
Imports System.Security.Principal

Class SecurityPrincipalDemo

 Public Shared Sub DemonstrateWindowsBuiltInRoleEnum()
 Dim myDomain As AppDomain = Thread.GetDomain()

 myDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal)
 Dim myPrincipal As WindowsPrincipal = CType(Thread.CurrentPrincipal, WindowsPrincipal)
 Console.WriteLine("{0} belongs to: ", myPrincipal.Identity.Name.ToString())
 Dim wbirFields As Array = [Enum].GetValues(GetType(WindowsBuiltInRole))
 Dim roleName As Object
 For Each roleName In wbirFields
 Try
 ' Cast the role name to a RID represented by the WindowsBuildInRole value.
 Console.WriteLine("{0}? {1}.", roleName, myPrincipal.IsInRole(CType(roleName, WindowsBuiltInRole)))
 Console.WriteLine("The RID for this role is: " + Fix(roleName).ToString())

 Catch
 Console.WriteLine("{0}: Could not obtain role for this RID.", roleName)
 End Try
 Next roleName
 ' Get the role using the string value of the role.
 Console.WriteLine("{0}? {1}.", "Administrators", myPrincipal.IsInRole("BUILTIN\" + "Administrators"))
 Console.WriteLine("{0}? {1}.", "Users", myPrincipal.IsInRole("BUILTIN\" + "Users"))
 ' Get the role using the WindowsBuiltInRole enumeration value.
 Console.WriteLine("{0}? {1}.", WindowsBuiltInRole.Administrator, myPrincipal.IsInRole(WindowsBuiltInRole.Administrator))
 ' Get the role using the WellKnownSidType.
 Dim sid As New SecurityIdentifier(WellKnownSidType.BuiltinAdministratorsSid, Nothing)
 Console.WriteLine("WellKnownSidType BuiltinAdministratorsSid {0}? {1}.", sid.Value, myPrincipal.IsInRole(sid))

 End Sub

 Public Shared Sub Main()
 DemonstrateWindowsBuiltInRoleEnum()

 End Sub
End Class

Remarks

The WindowsPrincipal class is primarily used to check the role of a Windows user. The WindowsPrincipal.IsInRole method overloads let you check the user role by using different role contexts.

Constructors

Name Description
WindowsPrincipal(WindowsIdentity)

Initializes a new instance of the WindowsPrincipal class by using the specified WindowsIdentity object.

Properties

Name Description
Claims

Gets a collection that contains all of the claims from all of the claims identities associated with this claims principal.

(Inherited from ClaimsPrincipal)
CustomSerializationData

Contains any additional data provided by a derived type. Typically set when calling WriteTo(BinaryWriter, Byte[]).

(Inherited from ClaimsPrincipal)
DeviceClaims

Gets all Windows device claims from this principal.

Identities

Gets a collection that contains all of the claims identities associated with this claims principal.

(Inherited from ClaimsPrincipal)
Identity

Gets the identity of the current principal.

UserClaims

Gets all Windows user claims from this principal.

Methods

Name Description
AddIdentities(IEnumerable<ClaimsIdentity>)

Adds the specified claims identities to this claims principal.

(Inherited from ClaimsPrincipal)
AddIdentity(ClaimsIdentity)

Adds the specified claims identity to this claims principal.

(Inherited from ClaimsPrincipal)
Clone()

Returns a copy of this instance.

(Inherited from ClaimsPrincipal)
CreateClaimsIdentity(BinaryReader)

Creates a new claims identity.

(Inherited from ClaimsPrincipal)
Equals(Object)

Determines whether the specified object is equal to the current object.

(Inherited from Object)
FindAll(Predicate<Claim>)

Retrieves all of the claims that are matched by the specified predicate.

(Inherited from ClaimsPrincipal)
FindAll(String)

Retrieves all or the claims that have the specified claim type.

(Inherited from ClaimsPrincipal)
FindFirst(Predicate<Claim>)

Retrieves the first claim that is matched by the specified predicate.

(Inherited from ClaimsPrincipal)
FindFirst(String)

Retrieves the first claim with the specified claim type.

(Inherited from ClaimsPrincipal)
GetHashCode()

Serves as the default hash function.

(Inherited from Object)
GetObjectData(SerializationInfo, StreamingContext)

Populates the SerializationInfo with data needed to serialize the current ClaimsPrincipal object.

(Inherited from ClaimsPrincipal)
GetType()

Gets the Type of the current instance.

(Inherited from Object)
HasClaim(Predicate<Claim>)

Determines whether any of the claims identities associated with this claims principal contains a claim that is matched by the specified predicate.

(Inherited from ClaimsPrincipal)
HasClaim(String, String)

Determines whether any of the claims identities associated with this claims principal contains a claim with the specified claim type and value.

(Inherited from ClaimsPrincipal)
IsInRole(Int32)

Determines whether the current principal belongs to the Windows user group with the specified relative identifier (RID).

IsInRole(SecurityIdentifier)

Determines whether the current principal belongs to the Windows user group with the specified security identifier (SID).

IsInRole(String)

Determines whether the current principal belongs to the Windows user group with the specified name.

IsInRole(WindowsBuiltInRole)

Determines whether the current principal belongs to the Windows user group with the specified WindowsBuiltInRole.

MemberwiseClone()

Creates a shallow copy of the current Object.

(Inherited from Object)
ToString()

Returns a string that represents the current object.

(Inherited from Object)
WriteTo(BinaryWriter, Byte[])

Serializes using a BinaryWriter.

(Inherited from ClaimsPrincipal)
WriteTo(BinaryWriter)

Serializes using a BinaryWriter.

(Inherited from ClaimsPrincipal)

Applies to


Feedback

Was this page helpful?