我必须在http://someserver访问 Web 服务器,它需要一些身份验证。我如何判断它是否使用 NTLM、Kerberos 或其他任何可能的东西?
3 回答
另一种方法是查看标头的前几个字节。
如果它开始于,Negotiate TlR
那么您正在通过 NTLM 进行 SPNEGO
如果它开始于,Negotiate YII
那么您正在通过 Kerberos 执行 SPNEGO。
授予
使用Fiddler之类的工具来查看响应标头。服务器将发回一些列出支持的不同安全协议的“WWW-Authenticate”标头。
扩展格兰特瑟马克的回答:
WWW-Authenticate 标头是 base64 编码的。当它以 TlR 开头时,解码后,我们看到它以 NTLMSSP ( http://msdn.microsoft.com/en-us/library/cc236641.aspx ) 开头,所以我们知道它是 NTLM。
当它以YII开头时,解码后我们看到它以字节0x60,0x82(即Application Constructed Object)开头,那么整个令牌的长度有两个字节,然后是:0x06,0x06,0x2b,0x06,0x01, 0x05、0x05、0x02(即 SPNEGO OID:1.3.6.1.5.5.2)。(http://msdn.microsoft.com/en-us/library/ms995330.aspx)。我们知道这是一个 SPNEGO 代币。
根据 spnego 令牌的长度,WWW-Authenticate 标头可能从 YA 开始到 YP。
卡米尔 & SPL