【发布时间】:2013-03-20 07:21:15
【问题描述】:
我正在编写一个应用程序,允许用户管理 Active Directory 中的组。我想使用当前登录用户的身份,这样他们就不必登录应用程序。该应用程序远程工作没有问题,但在部署到测试服务器(Windows 2008R2 IIS6)后,它试图使用 IIS APPPOOL 身份而不是我的身份。
相关的 web.config 设置:
<authentication mode="Windows"></authentication>
<identity impersonate="true" />
身份验证代码:
Session("Username") = ActiveDirectory.GetUsername( _
WindowsIdentity.GetCurrent.User.Translate(GetType(NTAccount)).Value _
)
ActiveDirectory 是一类辅助函数,不包含任何模拟逻辑。
如何获取访问应用程序的用户而非 IIS APPPOOL 用户的身份?
【问题讨论】:
-
什么类型的用户在管理组......?这是任何用户..?如果是这样
BAD IDEA你为什么没有一个 AD Admin 组来管理它..?还有另一件事,您仍然可以获取机器的当前用户并将其保留在不同的会话中,然后再解析为您尝试模拟的服务帐户或帐户用户.. -
只有组管理员才能编辑成员资格。在解析为服务帐户之前,我如何访问当前机器的用户?
-
var currUser= System.Security.Principal.WindowsIdentity.GetCurrent().Name.Split('\\'); -
那么您可以使用这段代码来确定用户是否甚至处于 AD 中,例如
PrincipalContext ctx = new PrincipalContext(ContextType.Domain, "MachineIP:389", "dc=dom,dc=fr", "jpb", "root.123");或使用PrincipalContext类 -
确保匿名身份验证已关闭
标签: c# vb.net iis iis-6 impersonation