2

假设客户端想要向 HTTP 代理验证自己的身份。代理使用 kerberos 进行配置,并且在其配置中明确设置了服务名称HTTP/proxy.foo.bar。客户端如何知道向哪个服务名称请求票证?它是向他请求的域名请求票证(在这种情况下确实是proxy.foo.bar),还是在身份验证序列中接收到名称,在这种情况下是 407 回复(其中不包含谈判挑战,但我只是不知道是否有办法调查它)?

我正在尝试调试突然停止对某些客户端进行身份验证的代理上的 kerberos 错误。问题是,在 Wireshark 中查看时,我看到客户端请求的票证不是在代理上配置的服务名称(与他指示使用的名称相同)HTTP/proxy.foo.bar,而是请求的名称代理 IP 解析为HTTP/host.foo.bar(好吧,至少它是代理解析的名称,可能是客户端以其他方式获取的名称),而 TGS 就是找不到一个,因此会发生错误.

4

1 回答 1

3

所以你在这里有两个问题(你没有问如何实际解决问题,要做到这一点需要更多细节 - 见评论)。

  1. 您问“代理配置了kerberos,并且在其配置中明确设置了服务名称HTTP/proxy.foo.bar。客户端如何知道向哪个服务名称请求票证?

A. 它的工作原理很像这样。客户端在 Web 浏览器中键入 URL 或单击超链接。它在 DNS 域中查找与 URL 中的主机名匹配的 IP 主机。然后它转到那个 IP 主机,寻找 URL 中定义的服务,在本例中是 HTTP 服务。如果它从 Web 服务器接收到 HTTP 401 协商质询(它是 401,而不是 407),由于它受 Kerberos 保护,它会转到其 KDC 并请求 HTTP/proxy.foo.bar 的 Kerberos 服务票证,然后返回到 proxy.foo.bar 并向该主机提供在其上运行的 HTTP 服务的票证。主机验证此票证,如果一切正常,客户端 Web 浏览器呈现 HTML。当您在客户端上运行 klist 时,您已经看到了 Kerberos 票证。我没有任何网络参考资料供你参考,

  1. 您还问“<em>它是否请求他请求的域名的票证(在这种情况下确实是 proxy.foo.bar),或者它是否在身份验证序列中接收名称,在 407 回复中这个案例(其中不包含谈判挑战,但我只是不知道是否有办法调查它)?”</li>

答:您的问题有点难以理解,但如果我对您的理解正确,答案是 Web 客户端由于来自 Web 服务器的 HTTP 401 协商身份验证质询而请求票证(见上文)。

网上有很多按此过程排序的图表,包括: http ://www.zeroshell.org/kerberos/Kerberos-operation/

于 2016-11-17T01:33:39.957 回答