Kerberos 工作原理

Kerberos验证过程:


如图,Kerberos认证过程:

1. Client 向KDC(Key Distribution Center)的KAS(Kerberos Authentication Service)确认,自己是真的Client。Client 发送KAS Request给KAS包括:  UserName 和 用“Client的密码”加密过的Authenticator(相当于暗号)。KAS根据UserName从AD(Authentication Database)提取出Client的密码并生成密钥,将发来的Authenticator解密。将解密后生成的信息与已知的信息对比,信息相符则成功(这里的信息指的是双方用于验证的预先知道的内容)。

    

2. 验证完身份后KAS反馈Client,KAS Response包括:用KDC的密钥加密的TGT和用Client的密码加密过的Logon Session Key,Client收到后放到本地的缓存中,如果需要同其他的Service通信,则不需要再次验证,可以直接使用在本地的TGT向TGS(Ticket Granting Serice)申请其他的Ticket。

注: TGT是用KDC的密钥加密的,所以Client收到后无法解开TGT。

3. Client向TGS请求Ticket,请求包括: UserName,用Logon Session Key加密的Authenticator,TGT和Server Name。TGS收到请求后,用KDC的密钥解密TGT,并用解密出来的Logon Session Key(TGT中的)解密Authenticator验证身份。


4. 确认身份后,根据UserName和ServerName生成一个Service Session Key和Ticket,并用Logon Session Key加密Service Session Key,用Server的密码加密Ticket,然后,反馈给Client。


5. Client收到反馈后,用本地缓存中的Logon Session Key解密出Service Session Key,然后,用Service Session Key加密Authenticator,将Authenticator和Ticket发送给Server做验证,同时它们也会被放入本地缓存之中。

注: Ticket是用Server的密码加密的,所以Client看不见里面的内容。


6. Server收到请求后,用密码解密Ticket,用解密后生成的Service Session Key解密Authenticator,用Authenticator解密出来的信息与Ticket中的信息对比验证。为了防止服是钓鱼服务,所以,需要双向验证(Mutual Authentication),Server需要将Authenticator,再次用Ticket中的Service Session Key加密,返还给Client。


7. Client收到Authenticator后,用缓存中的Service Session Key解密,验证Authenticator。

参考:

Kerberos验证过程的理解全部来自于: http://artech.cnblogs.com/ (作者:Artech)从新组织而来。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值