IE和Active Directory身份验证

时间:2012-10-15 16:33:15

标签: asp.net internet-explorer networking active-directory iis-7.5

我已经设置了一个使用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)中发送正确的头信息。

我希望有人可以帮我解决这个问题。

1 个答案:

答案 0 :(得分:1)

出于安全(安全)原因,IE不会向服务器发送凭据,除非确定它可以信任服务器。对于自动发送域凭据尤其如此。因此,为了确保IE对您的服务器具有最大的信任,您可以进入(浏览器菜单)工具,Internet选项,安全性并明确将服务器名称设置为“Intranet”区域。 Intranet区域的信任级别远高于普通的“可信”服务器。 安全免责声明:除非您确实信任,否则请勿将服务器明确标识为Intranet服务器。

有关更多信息,请阅读IE的安全区域。

此外,从IIS(身份验证),确保启用“Windows身份验证”(禁用匿名)和(选择“Windows身份验证”,单击“提供者”(右))确保NTLM位于列表的顶部