Windows模拟和复制令牌我有一个asp.net项目,请求将工作委托给后台(通过quartz.net)。Web应用程序正在使用Windows身份验证和模拟。我还想在后台线程上模拟当前用户。我已经阅读了如何模拟用户并使用提供的域名、用户名和密码调用内核。那个方法有效。IntPtr令牌;varsuccessfullLogon=LogonUser(用户名、密码、域、logonType、logonProvider、outtoken);如果(successfullLogon==false){varerrorCode=Marshal.GetHRForLastWin32Error();Marshal.ThrowExceptionForHR(errorCode);,但它要求我提供特定的用户名/密码,或者让用户输入他们的密码。这两种情况都不理想。我想要的是将来自请求的用户身份的令牌传递到后端,然后从这个现有令牌模拟用户。我读到我应该能够调用DuplicateHandle,vartoken=((WindowsIdentity)Request.User.Identity).GetToken().ToInt64();vartoken=newIntPrt(来自请求的令牌);IntPtr重复;尝试{if(NaviteMethod.DuplicateToken(token,SecurityImpersonationLevel.Impersonate,outduplicate)==false){varerrorCode=Marshal.GetHRForLastWin32Error();Marshal.ThrowExceptionForHR(errorCode);}using(varidentity=newWindowsIdentity(duplicate))using(varcontext=identity.Impersonate()){//做工作context.Undo();}}finally{if(duplicate!=IntPtr.Zero){NaviteMethod.CloseHandler(duplicate);但我得到一个异常重叠I/O操作正在进行的NativeMethod调用来自这篇文章:HowdoIpasscredentialstothecomputersoIcanuseMicrosoft.Win32.RegistryKey.OpenRemoteBaseKey()?是否可以使用当前用户的令牌并在后台线程上模拟该用户?如果可以,该怎么做?是否需要用户访问权限?不幸的是,您无法绕过“LogonUser”。一种选择是使用ASP.NET模拟。如果将第二个代码块的前两行替换为第一个代码块,则第二个代码块已经有了。以上就是《C#学习教程:Windows模拟与复制令牌共享》的全部内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权请点击右侧联系管理员删除。如需转载请注明出处:
