如何检查我的IIS站点是使用NTLM还是Kerberos?


Answers:


9

从:

确定HTTP身份验证是NTLM还是Kerberos
http://support.microsoft.com/kb/891032

[...]“由于我们正在查看此跟踪以查看客户端是否正在发送身份验证信息,因此我们可以使用TCP段来跟踪HTTP GET请求和来自服务器的响应。这是该帧的摘录从客户端发送身份验证信息:

23 4294967263.4294641621本地00045A420DBC HTTP GET请求(来自使用端口3135的客户端)192.168.0.2 192.168.0.4 IP HTTP:GET请求(来自使用端口3135的客户端)HTTP:请求方法= GET HTTP:统一资源标识符= /webapplication1/webform1.aspx HTTP:协议版本= HTTP / 1.1 HTTP:接受= image / gif,image / x-xbitmap,image / jpeg,image / pjpeg,application / vnd。HTTP:接受语言=启用HTTP:接受编码= gzip,缩小HTTP:用户代理= Mozilla / 4.0(兼容; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR HTTP:主机=外来HTTP:连接=保持活动状态的HTTP:授权=协商TlRMTVNTUAABAAAAB4IIogAAAAAAAAAAAAAAAAAAAAAFASgKAAAA 44 77 3D 3D 0D 0A 0D 0A AAADw == ....

“这告诉我们什么?我们可以看到Authorization标头设置为“ Negotiate”,并且可以看到在该标头中发送的一长串字符串。此响应告诉我们客户端和服务器正在协商NTLM连接。我们知道这里使用NTLM身份验证,因为第一个字符是'“ T”。如果它是“ Y”,则将是Kerberos。标头设置为“ Negotiate”而不是“ NTLM”。表示它将使用Kerberos或NTLM,但它将“协商”授权方法,并在可能的情况下先尝试Kerberos。如果不能使用Kerberos,则将使用NTLM。”

// if it is Negotiate...
if (String.Compare(Request.ServerVariables["HTTP_AUTHORIZATION"].Substring(10, 1), "Y", true) == 0)
{
    // we are using Kerberos
}
else
{
   // we are using NTLM
}

我将第一个字符命名为oXcw,知道这意味着什么吗?也许是更新版本的kerberos?
Mark Adamson

1
@MarkAdamson我也是,我也是oYG2 ...
Brain2000

4

如果可以访问IIS服务器,则答案比检查HTTP流量要简单得多:只需查看Windows身份验证的站点身份验证模块配置。

  1. 在IIS管理器中
  2. 选择你的网站
  3. 单击身份验证模块
  4. 选择Windows身份验证
  5. 选择提供商...

IIS管理器>站点>身份验证模块>提供程序


1

使用以下html / asp页中的代码:

<%
    authType=UCase(Request.ServerVariables("AUTH_TYPE"))
    authHeader=Request.ServerVariables("HTTP_AUTHORIZATION")
    response.write " Authentication Method : " & authType & "<BR>"
    LenAuthHeader = len(authHeader)
    response.write " Protocol : "
    if Len(authType ) =0 then response.write " Anonymous" else if authType<>"NEGOTIATE" then response.write authType else if LenAuthHeader>1000 then response.write "Kerberos" else response.write "NTLM"
%> 

0

这个答案还不是很完整。连接可以使用两种方式使用NTLM。一种是通过WWW-Authenticate方法“ NTLM”;另一种是通过WWW-Authenticate方法“ NTLM”。另一种是通过谈判。协商使用GSSAPI,后者又可以使用各种机制。在Windows上,这包括Kerberos和NTLM。

Wireshark可以解码所有这些内容,并假设您未使用TLS,可以快速向您显示正在发生的事情。如果是这样,可以安排Wireshark能够解密TLS流量;只是需要一些额外的努力。


0

在HTTP请求标头(您可以从FirebugChrome Dev ToolFiddler中看到它)中,如果使用NTLM,则会看到类似的内容

授权:NTLM = TlRMTVNTGD6XAAAAGAAYAG425qAAYABgAhgAAAAAAAABIAAAADAAAAggAOAEgAAAAYABgAVgAAAAAAAACeAAAABYKIogUBKAoAAAAPcwBpAG0AcABsAGkAcABOADMAUgBXAEsAVwBBAEwAVABFAAFAAAAAAAAAAAAAAAAAAAJA2A7A7A7A7A7A7A7A7A7A7A7A7A2A7A7A7A7A7A7A7A7A7A7A7A7A7A7A2CA7CA

在IIS管理面板中,可以转到身份验证,然后选择所需的身份验证。


但如果使用NTLM协商
土豚
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.