ASP.NET 2.0 中的模拟
Posted
技术标签:
【中文标题】ASP.NET 2.0 中的模拟【英文标题】:Impersonation in ASP.NET 2.0 【发布时间】:2009-05-07 07:30:46 【问题描述】:美好的一天,
我的 Web 应用设置为使用 Windows 身份验证,并且 Impersontation 设置为 true。
我不想使用已登录的用户帐户启动进程。但是,当我尝试启动 notepad.exe 时,它是作为网络服务运行的。
我尝试了不同的模仿技术,但都没有奏效。
请帮忙。
http://msdn.microsoft.com/en-us/library/ms998351.aspx#paght000023_impersonatingbyusingwindowsidentity
【问题讨论】:
【参考方案1】:简单的模拟不允许您以其他用户身份启动进程。您必须使用 Windows API 中的 CreateProcessAsUser
以及适当的权限
CreateProcessAsUser
函数不需要用户的密码。它需要一个 primary 令牌,该令牌可以从 System.Security.Principal.WindowsIdentity
对象获得。您的 ASP.NET 进程必须具有充当操作系统的一部分权限才能获得模拟级别的令牌。
How To: Use Impersonation and Delegation in ASP.NET 2.0 拥有该主题的所有详细信息。
一个也可能相关的相关问题是:Using Process.Start() to start a process as a different user from within a Windows Service.
【讨论】:
我们不希望用户再次重新提供密码。由于我们使用的是 Windows 身份验证,因此用户使用他的域帐户登录。使用 User.Identity.Name 表明当前用户已成功使用该帐户进行身份验证。我们只想使用用户提供的帐户运行一个进程。以上是关于ASP.NET 2.0 中的模拟的主要内容,如果未能解决你的问题,请参考以下文章
使用asp.net 2.0中的SqlBulkCopy类批量复制数据