我对Kerberos身份验证的工作方式了如指掌,但对于我的生活,我无法解释我在IIS托管的WCF服务中看到的奇怪行为.
我已经设置了一个非常简单的WCF应用程序,它使用BasicHttpBinding和TransportCredentialOnly公开端点.我的理解是,要使Kerberos工作,客户端必须指定用户主体名称或服务主体名称.由于某种原因,它在不同的绑定类型中似乎不一致.
当我省略这个主要名称时,在IIS6上,NTLM最终被使用.在IIS7上,它使用Kerberos.当我在IIS6上指定用户主体名称时,使用Kerberos但在IIS7上调用失败(Wireshark在Kerberos握手期间显示KRB_AP_ERR_BADMATCH错误).
当我使用Message安全性将绑定切换到WSHttpBinding时,它变得更加有趣.在该实验中,如果我没有在IIS6上指定用户主体名称,则调用失败,并且在IIS7上使用NTLM.当我指定UPN时,IIS6失败,II7最终使用Kerberos.以下是我的发现摘要.如果那里的任何人可以帮助我解决正在发生的事情,我会永远感激.
