目录

图解Kerberos三个密码验证的过程

概述

/%E5%9B%BE%E8%A7%A3kerberos%E4%B8%89%E4%B8%AA%E5%AF%86%E7%A0%81%E9%AA%8C%E8%AF%81%E7%9A%84%E8%BF%87%E7%A8%8B/image_1dcigfriv15p01sb0pq0pim16as9.png

Client 发送请求到 AS(Authentication Server),注意这个请求是用 Client 的密码A加密过的,无需在网络中传递 Client 的密码A,因为在 AS 收到请求后,会从创建用户的数据库里,找到 Client 的密码A用于解密。认证成功后,AS 会返回 TGT(Ticket Granting Ticket) 给 Client,注意,这个 TGT 会用另一个密码称为密码B来加密,如下图。

/%E5%9B%BE%E8%A7%A3kerberos%E4%B8%89%E4%B8%AA%E5%AF%86%E7%A0%81%E9%AA%8C%E8%AF%81%E7%9A%84%E8%BF%87%E7%A8%8B/image_1dcigmdduvgpo5oe118c99e7m.png

然后 Client 为了请求 FileServer,会继续将用密码B加密过的 TGT 发送给 TGS(Ticket Granting Server),如下图。

/%E5%9B%BE%E8%A7%A3kerberos%E4%B8%89%E4%B8%AA%E5%AF%86%E7%A0%81%E9%AA%8C%E8%AF%81%E7%9A%84%E8%BF%87%E7%A8%8B/image_1dcigqh67gm90ae6vstscjd13.png

而因为 TGS 也有密码B,所以解密验证通过后,又会给 Client 发送一个用又另外一个密码C加密过的 Token,如下图。

/%E5%9B%BE%E8%A7%A3kerberos%E4%B8%89%E4%B8%AA%E5%AF%86%E7%A0%81%E9%AA%8C%E8%AF%81%E7%9A%84%E8%BF%87%E7%A8%8B/image_1dcigsr9oljm1eut119d1eo41nm81g.png

又因为 FileServer 也存有密码C,所以当 Client 将带有 Token 的请求发送给 FileServer,FileServer 会将 token 用密码C加密,再发送给 TGS,最后 TGS 用密码C解密。

/%E5%9B%BE%E8%A7%A3kerberos%E4%B8%89%E4%B8%AA%E5%AF%86%E7%A0%81%E9%AA%8C%E8%AF%81%E7%9A%84%E8%BF%87%E7%A8%8B/image_1dcih4q2k1fcs15671kgp130p127p1t.png

最后 Client 终于可以访问 FileServer 的资源了。

/%E5%9B%BE%E8%A7%A3kerberos%E4%B8%89%E4%B8%AA%E5%AF%86%E7%A0%81%E9%AA%8C%E8%AF%81%E7%9A%84%E8%BF%87%E7%A8%8B/image_1dcih62domm71fef122p83mn1m2a.png

最后再总结下 Kerberos 验证过程中的四个组件三个密码的关系,密码A是 Client 和 AS 共有的,而密码B是 AS 和 TGS 共有的,最后密码C是 TGS 和 FileServer 共有的。

/%E5%9B%BE%E8%A7%A3kerberos%E4%B8%89%E4%B8%AA%E5%AF%86%E7%A0%81%E9%AA%8C%E8%AF%81%E7%9A%84%E8%BF%87%E7%A8%8B/image_1dcih7dke19v41ofm1k2hbb617p32n.png

参考资料

  1. https://www.youtube.com/watch?v=_44CHD3Vx-0
警告
本文最后更新于 2017年2月1日,文中内容可能已过时,请谨慎参考。