从客户端请求,服务器端获取Active Directory用户?

时间:2013-02-22 19:55:41

标签: iis active-directory httpmodule

我在IIS 7.5上运行了自定义HTTP模块,请求将来自同一Active Directory环境中的不同计算机。 是否可能让我在运行服务器端的HTTP模块中从请求中获取当前用户(他们的AD名称?)(或查询,如果我知道LDAP路径?)?

我不是AD专家,但我查看了模块中HTTPApplication实例(见下文)中的不同属性,我没有看到任何明显的内容。

Private Sub AuthenticateRequest(sender As Object, e As EventArgs)

        Dim oHttpApplication As HttpApplication = CType(sender, HttpApplication)
        '...
        ' Get AD Info from oHttpApplication.Request?
        '...
End Sub

有谁知道这是否可行或知道如何实现这一目标?

更新

我在下面添加了我的解决方案。

2 个答案:

答案 0 :(得分:1)

我的解决方案 - 在VB.NET中:

Dim username As String = Thread.CurrentPrincipal.Identity.Name

注意:我的链接中的问题答案继续使用PrincipalContextUserPrincipal对象,但对于我的方案,我需要的只是用户名。我还想指出,在测试该解决方案时,这一行:

pc = new PrincipalContext(ContextType.Domain, "active.directory.domain.com")

在没有域名的情况下也能正常工作:

pc = new PrincipalContext(ContextType.Domain)

希望这对未来的某个人有所帮助!

答案 1 :(得分:0)

修改IIS设置:

在IIS 禁用匿名身份验证和启用 Windows身份验证。

修改Web应用程序配置文件:

启用模拟

<configuration>
  <system.web>
    <identity impersonate="true"/>
  </system.web>
</configuration>

C#代码:

using System.Security.Principal


var user = WindowsIdentity.GetCurrent().Name;