如何解决我们是否需要在 kerberos 中重放缓存
既然kerberos在认证过程中已经有了时间戳,为什么还需要重放缓存? https://en.wikipedia.org/wiki/File:Kerberos_protocol.svg
解决方法
时间戳不是请求的唯一标识符。请求是票证 + 身份验证器,其中 身份验证器 每个请求都是唯一的。没有什么可以阻止客户端使用单独的身份验证器创建两个单独的请求,但要保持相同的时间戳并将它们发送到服务。
这实际上在多线程或高速操作或会话刚刚开始的情况下很常见。事实上,它几乎可以保证定期发生在你身上,因为时间精度不是特别高,在事情的计划中。
因此,您将身份验证器用作重放检查,其中包含每个请求的唯一随机数(以及可选的会话密钥)。如果您之前见过这个身份验证器,那么您绝对必须将请求视为重播。
第二个问题是多个[负载平衡]服务器的问题。如果您向服务器 (A) 发出请求,然后向服务器 (B) 发出相同的请求,则第二个请求是重放。如果您有意这样做,那么您可能会一个接一个地请求两个请求,这些请求可能具有相同的时间戳和不同的身份验证器,并发送到不同的服务器。
理想情况下,您应该在服务器之间使用共享缓存,以便它们可以进行检查,但实际上没有人这样做过。
简而言之,您是否应该缓存它取决于您是否绝对需要保证防止重播。如果你不这样做,那么时间戳 就足够了。如果你这样做,那么你需要一个合适的缓存,最好在服务器之间共享。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。