kerberos:客户端如何知道请求票证的服务名称?

时间:2016-11-16 08:46:21

标签: authentication single-sign-on kerberos http-authentication spn

假设客户端想要向HTTP代理验证自己。代理配置了kerberos,并且在其配置中明确设置了服务名称​​ HTTP / proxy.foo.bar 。客户端如何知道请求票证的服务名称?它是否请求他向其发出请求的域名的票证(在这种情况下它确实是 proxy.foo.bar ),或者它是否在验证序列中接收到该名称,在这种情况下回复407(其中包括谈判挑战,但我不知道是否有方法可以调查)?

我试图在代理上调试kerberos错误,突然停止验证某些客户端。问题是,在Wireshark中查看,我发现客户端请求的票证不是代理服务器上配置的服务名称(他指示使用的名称相同), HTTP / proxy.foo。吧,但是对于代理IP解析为的名称, HTTP / host.foo.bar (好吧,至少它是代理解析到的名称,可能虽然客户端得到了一些其他方式),而TGS却找不到一个,因此会发生错误。

1 个答案:

答案 0 :(得分:3)

所以你在这里有两个问题(你没有问过如何真正解决问题,需要更多细节 - 见评论)。

  1. 你问“代理服务器配置了kerberos,并且服务器名称中设置了明确的HTTP / proxy.foo.bar。客户端如何知道请求票证的服务名称?
  2. 一个。它的工作方式非常类似。客户端在Web浏览器中键入URL或单击超链接。它在DNS域中查找与主机名匹配的IP主机。然后它转到该IP主机,寻找URL中定义的服务,在这种情况下,它是HTTP服务。如果它从Web服务器收到HTTP 401 Negotiate质询(它是401,而不是407),由于它受Kerberos保护,它将转到其KDC并请求HTTP / proxy.foo.bar的Kerberos服务票据,拉回到proxy.foo.bar并向该主机提供在其上运行的HTTP服务的票证。主机验证此票证,如果一切正常,则客户端Web浏览器呈现HTML。当您在客户端上运行klist时,您已经看过Kerberos票证。我没有任何网络参考资料,这完全不是我的首选。

    1. 你还问过“它是否要求获取他所请求的域名的票证(在这种情况下它确实是proxy.foo.bar),或者它是否在验证序列中接收了该名称,在这种情况下回复407(其中包含谈判挑战,但我不知道是否有办法调查它)?
    2. 一个。您的问题有点难以理解,但如果我理解正确,答案是Web客户端因Web服务器的HTTP 401协商身份验证质询而请求故障单(见上文)。

      有许多图表在网络上对此过程进行排序,包括:http://www.zeroshell.org/kerberos/Kerberos-operation/