是否可以检查WindowsIdentity是否模仿?
答案 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);
}
}
输出: