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

Kli*_*akM 11 iis web kerberos authentication ntlm

如何检查我的 IIS 站点是使用 NTLM 还是 Kerberos?以及如何将身份验证从 Kerberos 更改为 NTLM?我正在使用 IIS 7.5。

Gre*_*kew 11

从:

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

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

23 4294967263.4294641621 LOCAL 00045A420DBC HTTP GET 请求(来自使用端口 3135 的客户端) 192.168.0.2 192.168.0.4 IP HTTP:GET 请求(来自客户端使用端口 3135 请求:Webdent 请求 / ASP1 请求资源 / 请求 192.168.0.4) HTTP:协议版本 = HTTP/1.1 HTTP:接受 = image/gif、image/x-xbitmap、image/jpeg、image/pjpeg、application/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:主机 = 外星人 HTTP:连接= 保持活动 HTTP:授权 = 协商 TlRMTVNTUAABAAAAB4IIogAAAAAAAAAAAAAAAAAAAAAFASgKAAAA 44 77 3D 3D 0D 0A 0D 0A AAADw==....

“这告诉我们什么?我们可以看到授权标头设置为“协商”,我们可以看到在该标头中发送了一长串字符。这个响应告诉我们客户端和服务器正在协商一个 NTLM 连接。我们知道这里使用了 NTLM 身份验证,因为第一个字符是“T”。如果它是“Y”,那就是 Kerberos。标头设置为“协商”而不是“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
}
Run Code Online (Sandbox Code Playgroud)

  • @MarkAdamson 我也是,我的是 oYG2 ... (2认同)

Joh*_*hnC 5

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

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

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