如何检查Windows身份是否模仿?

时间:2015-08-11 03:54:32

标签: c# windows impersonation

是否可以检查WindowsIdentity是否模仿?

1 个答案:

答案 0 :(得分:7)

是。只需检查WindowsIdentity类的ImpersonationLevel属性。

来自MSDN:

  

获取用户的模拟级别

     
      
  • 匿名 - 服务器进程无法获取有关客户端的标识信息,也无法模拟客户端
  •   
  • 委派 - 服务器进程可以模拟客户端在远程系统上的安全上下文
  •   
  • 标识 - 服务器进程可以获取有关客户端的信息......
  •   
  • 模拟 - 服务器进程可以在其本地系统上模拟客户端的安全上下文。
  •   
  •   

代码段(已修改MSDN example):

var identity = WindowsIdentity.GetCurrent();
Console.WriteLine("Before impersonation: " + identity.Name);
Console.WriteLine("ImpersonationLevel: {0}", identity.ImpersonationLevel);

// Use the token handle returned by LogonUser. 
using (WindowsIdentity newId = new   
       WindowsIdentity(safeTokenHandle.DangerousGetHandle()))
{
    using (WindowsImpersonationContext impersonatedUser = newId.Impersonate())
    {

        // Check the identity.
        identity = WindowsIdentity.GetCurrent();
        Console.WriteLine("After impersonation: "+ identity.Name);
        Console.WriteLine("ImpersonationLevel: {0}", identity.ImpersonationLevel);
    }
}

输出:

enter image description here

更多

Tell me more