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

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

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

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

最佳答案

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

  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. 您还问“它是否请求他正在请求的域名的票证(在本例中确实是 proxy.foo.bar),或者它是否在身份验证序列中以在这种情况下407回复(其中不包含协商挑战,但我只是不知道是否有办法调查它)?

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

网络上有很多对这个过程进行排序的图表,包括这里:http://www.zeroshell.org/kerberos/Kerberos-operation/

关于authentication - kerberos:客户端如何知道要请求票证的服务名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40627531/

相关文章:

java - SSO Spring Security 和 JSF

single-sign-on - SAML 2.0 断言的正确格式是什么?

ios - 是否有任何集成了 twitter 和 facebook 的单点登录项目

hadoop - 如何在hadoop中设置kerberos?

java - Apereo CAS 使用 NTLM 而不是 Kerberos

android-studio - Android Studio 无法登录 GitHub

angularjs - 带有 $http transformResponse 的 angular-http-auth

hadoop - 无法登录启用Kerberos的Hadoop群集

rest - 通过 CLI 或 Rest 添加 Artifactory 存储库

wordpress - 从哪里开始使用 Google Reader 作为 API?