Kerberos taro Posted on Mar 26 2021 windows ``` (1)Client:访问服务的客户机 (2)Server:提供服务的服务器 (3)KDC(Key Distribution Center):密钥分发中心 (4)KDC中分成两个部分:Authentication Service和Ticket Granting Service Authentication Service(AS):身份验证服务 Ticket Granting Service(TGS):票据授予服务 AS和TGS如下: Authentication Service:AS的作用就是验证Client端的身份,验证通过之后,AS就会给TGT票据(Ticket Granting Ticket)给Client. Ticket-granting cookie(TGC):存放用户身份认证凭证的cookie,在浏览器和CAS Server间通讯时使用,是CAS Server用来明确用户身份的凭证。TGT封装了TGC值以及此Cookie值对应的用户信息. Ticket-granting ticket(TGT):TGT对象的ID就是TGC的值,在服务器端,通过TGC查询TGT. Ticket Granting Service(TGS):TGS的作用是通过AS发送给Client的TGT换取访问Server端的ST(Server Ticket)给Client. SEerver Ticket(ST):ST服务票据,由TGS服务发布. (5)Active Directory(AD):活动目录 (6)Domain Controller(DC):域控制器 (7)Ticket-granting cookie(TGC):存放用户身份认证凭证的cookie,在浏览器和CAS Server间通讯时使用,是CAS Server用来明确用户身份的凭证。TGT封装了TGC值以及此Cookie值对应的用户信息. (8)Ticket-granting ticket(TGT):TGT对象的ID就是TGC的值,在服务器端,通过TGC查询TGT. ``` 1.首先Client向DC请求访问Server,DC判断Client是否可信。怎么判断?去AD中查找依次区分Client。这就是AS服务完成的工作。 2.认证通过后返回TGT给Client,Client 得到TGT(Ticket Granting Ticket)。 3.Client继续拿着TGT请求DC访问Server,TGS通过Client消息中的TGT,判断Client是否有访问权限。 4.如果有,给了Client访问Server的权限ticket,也叫ST(Service Ticket)。 5.Client得到ticket,再去访问Server,且该ticket只针对这个Server。 6.Server和Client建立通信。 ![](/api/file/getImage?fileId=605d57e183f5f2000d00002e) 1 Clinet 告诉 KDC 个人信息 , 密钥为自己 hash 2 KDC 把自己存的 Client 的 hash 解开Client 的个人信息, 并且把这个Hash 作为密钥加密个随机数(Session-Key as),并带上TGT(老大的信物:其中有Session-Key,个人信息) 用于确认 Client 真实 > KDC : 只有自己人能解出来Session-Key as 3 Client 把 KDC 返回由自己hash加密的信息解密,得到Session-Key as,拿Session-Key as对个人信息加密,带上大哥的信物发给KDC > Client : 我解出来了Session-Key as,我拿他加密证明给你看,无内鬼! 4 KDC先确认大哥的信物,拿着里边的Session-Key解密出来Cient个人信息. 再把刚刚Client的发的由Session-Key加密的个人信息解密出来. 两个解出来的个人信息一样证明前面流程的都是正确的, 在生成一个随机秘钥(Session-Key tgs),给Client回: 一部分是Session-key as 加密的 Session-key tgs,一部分是 Server 的hash 加密的Client 个人信息[ST(ticket)] > KDC : 解密Session-Key as 得到内容和大哥の密语一样,自己人! 给你个两个盒子,一个盒子的里有个钥匙,为了确定你是你,你拿钥匙锁住你的个人信息, 另一个盒子只有我兄弟能打开,那里边也有这个钥匙和你的个人信息,俩信息一对上就可以了 5 Client 用Session-key as (本地存储的)解出来 Session-Key tgs,再用 Session-Key tgs 假面个人信息带着ST给server > Client: Server 大哥,这个是我的盒子,这是老大的盒子 6 Server 先拿自己hash解ST,拿到Session-Key tgs和Client个人信息,再拿zSession-Key tgs解密第一部分的个人信息,要是俩一样,成了! > Server: 老大盒子里写的人和这个人一样,自己人! https://xz.aliyun.com/t/8187 https://www.jianshu.com/p/13758c310242 https://mp.weixin.qq.com/s/MtomFV5oKziT6_Zt1rBpKQ 面试问题总结 Linux 开发学习 (一)