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

如何检查我的IIS站点是否使用NTLM或Kerberos? 我怎样才能将身份validation从Kerberos更改为NTLM? 我正在使用IIS 7.5,我找不到任何回答这个问题,可以帮我一下吗?

从:

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

[…]“因为我们正在查看这个跟踪信息,看看客户端是否在发送authentication信息,我们可以使用TCP段来跟踪HTTP GET请求和服务器的响应。从客户端发送authentication信息:

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:接受=图像/ gif,图像/ x-xbitmap,图像/ jpeg,图像/ pjpeg,应用程序/ vnd。 HTTP:Accept-Language = en-us HTTP:Accept-Encoding = gzip,deflate HTTP:User-Agent = Mozilla / 4.0(兼容; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR HTTP:Host =外部HTTP:连接= Keep-Alive HTTP:Authorization = Negotiate TlRMTVNTUAABAAAAB4IIogAAAAAAAAAAAAAAAAAAAAAFASgKAAAA 44 77 3D 3D 0D 0A 0D 0A AAADw == ….

“这个告诉我们什么?我们可以看到Authorization头部设置为”Negotiate“,我们可以看到在头部发送了一串长字符,这个响应告诉我们客户端和服务器正在协商一个NTLM连接。 我们知道这里使用的是NTLM身份validation,因为第一个字符是“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 } 

如果您有权访问您的IIS服务器,则答案比检查HTTPstream量要简单得多:只需查看Windows身份validation的站点身份validation模块configuration即可。

  1. 在IISpipe理器中
  2. select您的网站
  3. 点击authentication模块
  4. selectWindows身份validation
  5. select提供者…

IIS管理器>站点>认证模块>提供者

在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" %> 

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

Wireshark可以解码所有这些,并假设你没有使用TLS,快速地告诉你发生了什么。 如果你是,你可以安排Wireshark能够解密TLSstream量; 它只是需要一些额外的努力。

在你的HTTP Request Header中(你可以从FirebugChrome Dev ToolFiddler看到),如果你使用NTLM,你会看到类似的东西

授权:NTLM = TlRMTVNTGD6XAAAAGAAYAG425qAAYABgAhgAAAAAAAABIAAAADgAOAEgAAAAYABgAVgAAAAAAAACeAAAABYKIogUBKAoAAAAPcwBpAG0AcABsAGkAcABOADMAUgBXAEsAVwBBAEwAVABFAFIAQQAzVtleqNj7HAAAAAAAAAAAAAAAAAAAAACW3g66aPaiileWScIYweBj6fs2iGY / TA3 =

从IISpipe理面板,您可以进入身份validation并select您喜欢的身份validation。