理解.net冒充
.NET模拟允许在指定的用户帐户下执行代码,并经常与基于凭证的帐户访问相结合。 .NET框架为模拟和用户帐户管理提供了必要的API。
模拟技术
名称空间提供了几种实现模仿的方法:System.Security.Principal
WindowsIdentity.RunImpersonated
或委托。
Action
Func<T>
WindowsIdentity.Impersonate
块中的模仿。WindowsImpersonationContext
using
>带有凭据的用户帐户>使用提供的凭据访问用户帐户通常涉及本机Win32 api:
虽然功能,但LogonUser
可以复杂。 一个更简单的替代方法是
<code class="language-csharp">[DllImport("advapi32.dll")] internal static extern bool LogonUser(String lpszUsername, String lpszDomain, String lpszPassword, int dwLogonType, int dwLogonProvider, out IntPtr phToken);</code>
LogonUser
SimpleImpersonation
限制:远程冒充
<code class="language-csharp">using SimpleImpersonation; var credentials = new UserCredentials(domain, username, password); using (SafeAccessTokenHandle userHandle = credentials.LogonUser(LogonType.Interactive)) { // Your impersonated code here }</code>
模仿本质上是本地的。除非它们共享相同的域或具有信任关系,否则它不会扩展到远程计算机。
以上是如何在.NET中执行模仿?的详细内容。更多信息请关注PHP中文网其他相关文章!