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类批量复制数据

ASP.NET Core 2.0 中的多个身份

带你做 WebAPI 迁移 ASP.NET Core 2.0

ASP.NET CORE 2.0 中的 FromUri

排序时在 ASP.NET 2.0 中的高效自定义分页

ApplicationUser在Asp.Net Core 2.0中的ActionFilter中?