Csharp/CSharp Tutorial/Security/WindowsIdentity — различия между версиями
Admin (обсуждение | вклад) м (1 версия) |
Admin (обсуждение | вклад) м (1 версия) |
(нет различий)
|
Текущая версия на 12:17, 26 мая 2010
Содержание
- 1 Determining group identity: WindowsBuiltInRole.PowerUser
- 2 Get current principal identity name
- 3 Get the current identity
- 4 Get the current identity and its associated principal
- 5 Impersonation
- 6 Iterate through the group names to see if the current user is a member of each one
- 7 Obtain a WindowsIdentity object representing the currently logged on Windows user
Determining group identity: WindowsBuiltInRole.PowerUser
using System;
using System.Security.Principal;
class MainClass
{
public static void Main()
{
WindowsIdentity wi = WindowsIdentity.GetCurrent();
WindowsPrincipal prin = new WindowsPrincipal(wi);
if (prin.IsInRole(WindowsBuiltInRole.PowerUser))
{
Console.WriteLine("You are a member of the Power User group");
}
else
{
Console.WriteLine("You are not a member of the Power User group");
}
}
}
You are not a member of the Power User group
Get current principal identity name
using System;
using System.Threading;
using System.Security;
using System.Security.Permissions;
using System.Collections.Generic;
using System.Text;
using System.Collections;
class Program
{
static void Main(string[] args)
{
System.Security.Principal.WindowsIdentity wi = System.Security.Principal.WindowsIdentity.GetCurrent();
Thread.CurrentPrincipal = new System.Security.Principal.WindowsPrincipal(wi);
Console.WriteLine(wi.Name);
Console.WriteLine(Thread.CurrentPrincipal.Identity.Name);
PrincipalPermission pp = new PrincipalPermission(null, "Administrators", true);
pp.Demand();
PrincipalPermission pp2 = new PrincipalPermission(null, "Users", true);
pp.Union(pp2).Demand();
try
{
PrincipalPermission pp3 = new PrincipalPermission(null, "Club");
pp3.Demand();
}
catch (SecurityException e)
{
Console.WriteLine("You do not have access to the secret club.");
}
}
}
Get the current identity
using System;
using System.Security.Principal;
class MainClass
{
public static void Main()
{
WindowsIdentity wi = WindowsIdentity.GetCurrent();
Console.WriteLine("Identity information:");
Console.WriteLine(" Authentication Type: {0}",wi.AuthenticationType);
Console.WriteLine(" Is Anonymous: {0}", wi.IsAnonymous);
Console.WriteLine(" Is Authenticated: {0}", wi.IsAuthenticated);
Console.WriteLine(" Is Guest: {0}", wi.IsGuest);
Console.WriteLine(" Is System: {0}", wi.IsSystem);
Console.WriteLine(" Name: {0}", wi.Name);
Console.WriteLine(" Token: {0}", wi.Token);
}
}
Identity information: Authentication Type: NTLM Is Anonymous: False Is Authenticated: True Is Guest: False Is System: False Name: nfex\Joe Token: 1800
Get the current identity and its associated principal
using System;
using System.Security.Principal;
class MainClass
{
public static void Main()
{
WindowsIdentity wi = WindowsIdentity.GetCurrent();
WindowsPrincipal prin = new WindowsPrincipal(wi);
Console.WriteLine("Principal information:");
Console.WriteLine(" Authentication Type: {0}", prin.Identity.AuthenticationType);
Console.WriteLine(" Is authenticated: {0}", prin.Identity.IsAuthenticated);
Console.WriteLine(" Name: {0}", prin.Identity.Name);
}
}
Principal information: Authentication Type: NTLM Is authenticated: True Name: nfex\Joe
Impersonation
using System;
using System.Collections.Generic;
using System.IO;
using System.IO.IsolatedStorage;
using System.Net;
using System.Net.Sockets;
using System.Reflection;
using System.Security;
using System.Security.AccessControl;
using System.Security.Policy;
using System.Security.Permissions;
using System.Security.Principal;
using System.Text;
public class MainClass
{
public static void Main()
{
WindowsIdentity identity = WindowsIdentity.GetCurrent();
WindowsImpersonationContext context = identity.Impersonate();
context.Undo();
}
}
Iterate through the group names to see if the current user is a member of each one
using System;
using System.Security.Principal;
class MainClass
{
public static void Main (string[] args)
{
WindowsIdentity identity = WindowsIdentity.GetCurrent();
WindowsPrincipal principal = new WindowsPrincipal(identity);
foreach (string role in args)
{
Console.WriteLine("Is {0} a member of {1}? = {2}", identity.Name, role, principal.IsInRole(role));
}
}
}
Obtain a WindowsIdentity object representing the currently logged on Windows user
using System;
using System.Security.Principal;
class MainClass
{
public static void Main (string[] args)
{
WindowsIdentity identity = WindowsIdentity.GetCurrent();
}
}