我已经建立了一个使用 AD 来确定权限的 Intranet 站点。与 IE 配合得很好。
有时用户会访问该站点并被要求提供凭据,即使他们使用的是 IE。我猜 IE 没有发送站点需要的 AD 信息,可能是因为安全设置。
我正在使用设置了 Windows 身份验证的 Windows Server 2008 R2 和 IIS 7.5。
在代码中,当页面被加载时,它会询问 NT 用户名:
Dim ss As SoftwareStorage = New SoftwareStorage()
Dim username As String
username = ss.returnUserName()
...
<input type="hidden" id="domainName" value="<% Response.Write(username)%>" />
...
Dim ftpUser As System.Security.Principal.IPrincipal
Public Function returnUserName() As String
ftpUser = System.Web.HttpContext.Current.User
Return (ftpUser.Identity.Name)
End Function
我查看了良好(工作)和坏(不工作)http 连接的 Wireshark 提要。好的有两个初始http调用的以下信息:
GET /foo/index.aspx HTTP/1.1 , NTLMSSP_NEGOTIATE
GET /foo/index.aspx HTTP/W.W , NTLMSSP_AUTH, User: MYDOMAIN\foobar
坏的在相同的两个初始调用中具有以下内容:
GET / HTTP/1.1
GET / HTTP/1.1
因此,看起来 IE 在一个实例(IE 9、Vista)中没有发送正确的请求标头信息,而在另一个实例(IE 9、Win7)中发送了正确的标头信息。
我希望有人能帮我解决这个问题。