Question
Get role and claim information
Solution
using namespace System;
using namespace System::Security;
using namespace System::Security::Principal;
using namespace System::Security::Permissions;
using namespace System::Collections::Generic;
[PrincipalPermission(SecurityAction::Demand, Role = "BUILTIN\\Users")]
static void ShowMessage()
{
Console::WriteLine("The current principal is logged in locally ");
Console::WriteLine("(member of the local Users group)");
}
int main(array<System::String ^> ^args)
{
AppDomain::CurrentDomain->SetPrincipalPolicy(PrincipalPolicy::WindowsPrincipal);
try
{
ShowMessage();
}
catch (SecurityException^ exception)
{
Console::WriteLine("Security exception caught ({0})", exception->Message);
Console::WriteLine("The current principal must be in the local Users group");
}
// Claims
auto principal = dynamic_cast<WindowsPrincipal^>(WindowsPrincipal::Current);
if(principal == nullptr){
Console::WriteLine("Failed in converting WindowsPrincipal::Current");
return 1;
}
Console::WriteLine();
Console::WriteLine("Claims");
for each (Claims::Claim^ claim in principal->Claims)
{
Console::WriteLine("Subject: {0}", claim->Subject);
Console::WriteLine("Issuer: {0}", claim->Issuer);
Console::WriteLine("Type: {0}", claim->Type);
Console::WriteLine("Value type: {0}", claim->ValueType);
Console::WriteLine("Value: {0}", claim->Value);
for each (KeyValuePair<String^, String^> prop in claim->Properties)
{
Console::WriteLine("\tProperty: {0} {1}", prop.Key, prop.Value);
}
Console::WriteLine();
}
return 0;
}
Output
The current principal is logged in locally
(member of the local Users group)
Press any key to continue . . .