1. KDChtml
全称:key distributed center安全
做用:整个安全认证过程的票据生成管理服务,其中包含两个服务,AS和TGS网络
2. ASide
全称:authentication servicepost
做用:为client生成TGT的服务性能
3. TGS加密
全称:ticket granting servicespa
做用:为client生成某个服务的ticket .net
4. AD设计
全称:account database
做用:存储全部client的白名单,只有存在于白名单的client才能顺利申请到TGT
5. TGT
全称:ticket-granting ticket
做用:用于获取ticket的票据
6.client
想访问某个server的客户端
7. server
提供某种业务的服务
图1 kerberos认证流程
图1展现了kerberos的认证流程,整体分为3步。
client与AS交互
client与TGS交互
client与server交互
kerberos为何要采用3步交互的形式来完成安全认证,那就要从kerberos的使用场景提及。
相比kerberos,https可能更为熟悉一点,经过证书和非对称加密的方式,让客户端能够安全的访问服务端,但这仅仅是客户端安全,经过校验,客户端能够保证服务端是安全可靠的,而服务端却没法得知客户端是否是安全可靠的。这也是互联网的一种特性。而kerberos能够支持双向认证,就是说,能够保证客户端访问的服务端是安全可靠的,服务端回复的客户端也是安全可靠的。
想证实client和server都是可靠的,必然要引入第三方公证平台,这里就是AS和TGS两个服务。
1.client向kerberos服务请求,但愿获取访问server的权限。kerberos获得了这个消息,首先得判断client是不是可信赖的,也就是白名单黑名单的说法。这就是AS服务完成的工做,经过在AD中存储黑名单和白名单来区分client。成功后,AS返回TGT(向TGS申请ticket的票据)给client。
2.client获得了TGT后,继续向kerberos的TGS请求,但愿获取访问某个server的权限。kerberos又获得这个消息,这时候经过client消息中的TGT,判断出client拥有了这个权限,给了client访问server的权限ticket。
3.client获得ticket后,终于能够成功访问server。这个ticket只是针对这个server,其余server须要再次向TGS申请ticket(门票)。
经过这3步,一次请求就完成了。固然这里会有个问题,这样也没比https快啊。解释一下
1. 整个过程TGT的获取只须要一次,其中有超时的概念,时间范围内TGT都是有效的,也就是说通常状况访问server只须要直接拿到ticket便可
2. 整个过程采用的是对称加密,相对于非对称加密会有性能上的优点
3. kerberos的用户管理很方便,只须要更新AD中的名单便可
固然整个过程的通讯都是加密的,这里设计到两层加密,由于全部的认证都是经过client,也就是说kerberos没有和server直接交互,这样的缘由是kerberos并不知道server的状态,也没法保证同时和server,client之间通讯的顺序,由client转发可让client保证流程顺序。
第一层加密,kerberos对发给server数据的加密,防止client获得这些信息篡改。
第二层加密,kerberos对发给client数据的加密,防止其余网络监听者获得这些信息。
client和server的通讯也是如此
// 对kerberos通俗易懂的介绍