Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net Windows身份验证-Kerberos或NTLM(ICO…)_Asp.net_Iis_Windows Authentication_Kerberos_Ntlm - Fatal编程技术网

Asp.net Windows身份验证-Kerberos或NTLM(ICO…)

Asp.net Windows身份验证-Kerberos或NTLM(ICO…),asp.net,iis,windows-authentication,kerberos,ntlm,Asp.net,Iis,Windows Authentication,Kerberos,Ntlm,我在intranet应用程序中遇到单个用户的问题。客户端是一个WPF应用程序,它与ASP.NETWebAPI Web服务进行通信 客户端使用发送HTTPS GET和POST请求 HttpClientHandler handler = new HttpClientHandler() { AutomaticDecompression = DecompressionMethods.Deflate | DecompressionMethods.GZip, UseDefaultCredential

我在intranet应用程序中遇到单个用户的问题。客户端是一个WPF应用程序,它与ASP.NETWebAPI Web服务进行通信

客户端使用发送HTTPS GET和POST请求

HttpClientHandler handler = new HttpClientHandler()
{
  AutomaticDecompression = DecompressionMethods.Deflate | DecompressionMethods.GZip,
  UseDefaultCredentials = true,
  PreAuthenticate = true
};
在IIS上,通过NTLM和协商提供程序启用Windows身份验证

该系统适用于除401.1之外的所有用户,但仅适用于POST请求

我现在正试图找出这个用户的不同之处。我唯一注意到的是一种不同的授权头

从(和许多其他资源)我读到:

如果报头以“T”开头(例如:HTTP:Authorization=govertiate-TlRMTVNTU…),则使用的是NTLM如果它以“Y”开头(例如:授权:协商YIILjgYGKwYB…),那么您成功地使用了Kerberos

我可以看到似乎使用Kerberos的工作请求的标题:

Authorization: Negotiate YIIT4QYGKwYBBQUCoIIT1TCC...
从未能发布的用户发送的标题如下所示

Authorization: Negotiate oYICOTCCAjWgAwoBAaKCAhg...

它以
o
开头这是NTLM还是Kerberos?POST请求的身份验证失败,但GET成功

为什么不使用Wireshark呢

Wireshark将检查所有交通。我将把票证从ASN.1分解为一个可显示的树结构。您将看到在您的案例中使用了什么机制。此外,您将看到所有Kerberos流量,例如,如果存在“协商”,则您的
TGS-REQ

两个请求似乎都是试图使用Spnego协商机制。虽然Spnego经常与Kerberos结合使用,但不应混淆两者

授权:谈判

…是Spnego NEGTONKERESP(Microsoft文档中的NEGTONKETARG)

这可能包含Kerberos令牌、NTLM或Spnego协议(或所使用的特定Spnego实现)支持的任何其他可协商子机制。所以这可能是Kerberos、NTLM或其他东西

“oY”解码为十六进制字节“a1”,就像“oQ”解码为“oZ”,所以其中任何一个都可能表示NegTokenResp

授权:谈判易

…是Kerberos令牌(可能具有Kerberos或Spnego OID)


它可以“直接”发送,也可以封装在Spnego令牌中(例如,上面的NEGTONKERESP)。

感谢您的回答(尽管它更像是一个评论,而不是真实的回答)。我不使用Wireshark,因为我不知道:)也许你可以提供更多的细节,如何使用Wireshark解决这个问题,并使你的帖子成为一个真实的答案。如果它以YHU开头,它可能是一个NTLM。它必须从YII开始,至少是Kerberos。