我已经设置了一个使用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)中发送正确的头信息。
我希望有人可以帮我解决这个问题。
答案 0 :(得分:1)
出于安全(安全)原因,IE不会向服务器发送凭据,除非确定它可以信任服务器。对于自动发送域凭据尤其如此。因此,为了确保IE对您的服务器具有最大的信任,您可以进入(浏览器菜单)工具,Internet选项,安全性并明确将服务器名称设置为“Intranet”区域。 Intranet区域的信任级别远高于普通的“可信”服务器。 安全免责声明:除非您确实信任,否则请勿将服务器明确标识为Intranet服务器。
有关更多信息,请阅读IE的安全区域。
此外,从IIS(身份验证),确保启用“Windows身份验证”(禁用匿名)和(选择“Windows身份验证”,单击“提供者”(右))确保NTLM位于列表的顶部