【发布时间】:2011-06-14 18:39:49
【问题描述】:
我正在尝试在我的 asp.net 网站项目中检索当前用户的 Windows 登录用户名。
我的 web.config 文件有以下项目
<identity impersonate="true"/>
<authentication mode="Forms">
<forms name="app" path="/path" loginUrl="/path/login.aspx" protection="All" timeout="100" />
</authentication>
<authorization>
<deny users="?" />
<allow users="*"/>
</authorization>
我的理解是,通过这种配置,我应该能够从WindowsIdentity.GetCurrent().Name 检索域\用户名。但是,此属性返回 NT AUTHORITY\IUSR,它是匿名访问的用户。如果我没记错的话,我在我的授权部分拒绝匿名访问该网站。我错过了什么?
还要注意:
System.Web.HttpContext.Current.Request.LogonUserIdentity.Name 也返回 NT AUTHORITY\IUSR 和 Request.ServerVariables["LOGON_USER"] 返回一个空字符串,这与此知识库文章 http://support.microsoft.com/kb/306359 中的信息不符
我正在使用 .net 4.0 和 Windows 7 开发环境。
一些使我达到这一点的资源:
http://msdn.microsoft.com/en-us/library/ff647076.aspx
http://support.microsoft.com/kb/306158
http://forums.asp.net/t/1121780.aspx/1?Getting+a+users+DOMAIN+username+from+a+web+application
感谢您的宝贵时间。
编辑
应该注意的是,我被锁定在表单身份验证中(Windows 身份验证不是一个选项),因为这是一个多租户站点,大多数用户不会使用此单点登录功能。
【问题讨论】:
标签: asp.net active-directory web-config single-sign-on