如何使用 GSS API 更新 kerberos 服务票证

Posted

技术标签:

【中文标题】如何使用 GSS API 更新 kerberos 服务票证【英文标题】:how do i renew a kerberos service ticket using GSS API 【发布时间】:2013-08-28 18:27:32 【问题描述】:

我使用 GSS API 通过 Kerberos 身份验证(gss_init_sec_context 调用)向 SMB 2.0 服务器验证自己。我知道我可以使用 kinit -R 命令更新 TGT。但我也希望能够更新我获得的服务票。

在协议规范中,它说客户端需要更新 kerberos 票证..

是否可以更新服务票?还是我应该创建一个新的上下文?

也非常欢迎任何与使用 GSS api 的 SMB 2.0 重新身份验证相关的指针

【问题讨论】:

从此页面link 我知道可以续订服务票证(请参阅部分 - 了解 Kerberos 概念,在该子部分的客户端/服务器交换中)。但我想知道我是否可以通过 GSS API 或 unix shell(如 kinit)做一些事情。顺便说一句,我正在使用 MIT Kerberos。 【参考方案1】:

服务票证是否包含RENEWABLE 标志?

不能使用 GSS-API 续订任何票证。这必须通过其他方式使用下面的机制来完成。 GSS-API 太高级了,它实际上对底层的机械——在本例中是 Kerberos——技术一无所知。

这实际上不应该打扰您,只要服务票证缓存在 CC 中,API 将/应该在新的上下文中重用它。由于 SMB 是基于会话的,因此您必须为此创建一个新的 GSS 上下文。

如果您仍想篡改以下机制,请研究 this 网站。虽然我不会推荐这个。

【讨论】:

我很困惑。您说的是请求可更新的服务票证,还说要使用 GSS API 建立新的上下文。有没有办法告诉 GSS API 建立新的上下文并在必要时更新服务票证而不创建新的?是的,我确实在 TGS-REQ 中看到了 RENEWABLE 标志,这是 wireshark 捕获的。如果您需要更多信息,请告诉我。 dump. 好的,知道了!我对 GSS API 感到困惑。阅读更多关于它的内容,最后在阅读了你的东西后帮助了我。非常感谢!但是如果有来自wireshark捕获的建议,请给我建议! 现在是否清楚为什么不能仅使用 GSS-API 续订票证? 我使用 kinit -R 更新我的 TGT。要更新服务票证,我只需删除旧上下文并通过 GSS API 创建新上下文?根据您的解释,我得出结论,如果服务票被缓存,Kerberos 将负责更新服务票。请注意,服务票证将过期.. 我不谈论 SMB,而是谈论 Kerberos。 DES密码可以(很容易)伪造。您应该知道 GSS 上下文不是线程安全的。最好创建一个新的,它很便宜,恕我直言。

以上是关于如何使用 GSS API 更新 kerberos 服务票证的主要内容,如果未能解决你的问题,请参考以下文章

DataGrip 连接 Kerberos 认证的 hive 报 Hive JDBC Kerberose Authentication Error: GSS initiate failed 错误

StormUI 无法获取数据

认证模式之Spnego模式

GSS JAAS 无法读取密钥库/选项卡

我们如何在 Linux 上使用 axios 发送带有 Kerberos 身份验证的 post 请求?

Apache Kerberos 未从 Windows 客户端进行身份验证