1. Kerberos简介
1.1. 功能
- 一个安全认证协议
- 用tickets验证
- 避免本地保存密码和在互联网上传输密码
- 包含一个可信任的第三方
- 使用对称加密
- 客户端与服务器(非KDC)之间能够相互验证
Kerberos只提供一种功能——在网络上安全的完成用户的身份验证。它并不提供授权功能或者审计功能。
1.2. 概念
首次请求,三次通信方
- the Authentication Server
- the Ticket Granting Server
- the Service or host machine that you’re wanting access to.
![3e4ca921-2f2f-eb11-8da9-e4434bdf6706.png](http://p02.5ceimg.com/content/3e4ca921-2f2f-eb11-8da9-e4434bdf6706.png)
图 1‑1 角色
其他知识点
- 每次通信,消息包含两部分,一部分可解码,一部分不可解码
- 服务端不会直接有KDC通信
- KDC保存所有机器的账户名和密码
- KDC本身具有一个密码
2. 3次通信
![404ca921-2f2f-eb11-8da9-e4434bdf6706.png](http://p03.5ceimg.com/content/404ca921-2f2f-eb11-8da9-e4434bdf6706.png)
我们这里已获取服务器中的一张表(数据)的服务以为,为一个http服务。
2.1. 你和验证服务
如果想要获取http服务,你首先要向KDC表名你自己的身份。这个过程可以在你的程序启动时进行。Kerberos可以通过kinit获取。介绍自己通过未加密的信息发送至KDC获取Ticket Granting Ticket (TGT)。
(1)信息包含
- 你的用户名/ID
- 你的IP地址
- TGT的有效时间
Authentication Server收到你的请求后,会去数据库中验证,你是否存在。注意,仅仅是验证是否存在,不会验证对错。
如果存在,Authentication Server会产生一个随机的Session key(可以是一个64位的字符串)。这个key用于你和Ticket Granting Server (TGS)之间通信。
(2)回送信息
Authentication Server同样会发送两部分信息给你,一部分信息为TGT,通过KDC自己的密码进行加密,包含:
- 你的name/ID
- TGS的name/ID
- 时间戳
- 你的IP地址
- TGT的生命周期
- TGS session key
另外一部分通过你的密码进行加密,包含的信息有
- TGS的name/ID
- 时间戳
- 生命周期
- TGS session key
![464ca921-2f2f-eb11-8da9-e4434bdf6706.png](http://p05.5ceimg.com/content/464ca921-2f2f-eb11-8da9-e4434bdf6706.png)