我在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
有谁知道这是否可行或知道如何实现这一目标?
更新
我在下面添加了我的解决方案。
答案 0 :(得分:1)
我的解决方案 - 在VB.NET中:
Dim username As String = Thread.CurrentPrincipal.Identity.Name
注意:我的链接中的问题答案继续使用PrincipalContext
和UserPrincipal
对象,但对于我的方案,我需要的只是用户名。我还想指出,在测试该解决方案时,这一行:
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;