Kerberos是一种安全认证协议,意在提供
- more secure authentication
- simplified management of password
- convenience of single sign on
Kerberos的基本结构
- Kerberos Client: 申请服务的一方
- Kerberized Service: 提供服务的一方
- Kerberos KDC: 提供密码管理的认证的一方。Client和service provider都会将自己的私密保存在KDC中。
Kerberos 认证过程
1. Client向KDC申请TGT
Client向KDC发送只包含 principal 的数据包
KDC查询user principal database是否存在该用户,如果存在,则生成一个被KDC密钥加密过的TGT和一个time sensitive的session key. 然后返回给用一个被用户密钥加密过的TGT+session key
2. Client向KDC请求service
Client生成一个authenticator,并用session key加密,和请求的服务名,TGT,一并发送给KDC。
KDC对比authenticator和TGT,如果没有问题,则相信client,并返回给client一个用service密钥加密的service ticket和新的session key,返回的数据包用第一次的session key加密。
3. Client向service请求服务
Client收到KDC返回的数据包,并用新的session key加密authenticator,和service ticket一起发送给service。
Service收到数据包,用自己的密钥打开service ticket,然后用service ticket里面的session key打开authenticator。如果验证通过,则返回client想要的服务数据。
Reference
https://www.youtube.com/watch?v=KD2Q-2ToloE
http://www.kerberos.org/software/tutorial.html
https://software.intel.com/sites/manageability/AMT_Implementation_and_Reference_Guide/default.htm?turl=WordDocuments%2Fintroductiontokerberosauthentication.htm