最近在工作中调试vmware identity manager 产品的SSO功能,有机会深入了解了一下Kerberos的工作原理,随笔记录一下,以作将来回顾之用。
成都创新互联服务项目包括杜尔伯特网站建设、杜尔伯特网站制作、杜尔伯特网页制作以及杜尔伯特网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,杜尔伯特网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到杜尔伯特省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!
什么是Kerberos,参看wiki- https://en.wikipedia.org/wiki/Kerberos_(protocol)。简单说Kerberos是一种网络认证协议,它是通过使用秘钥加密的方式来提供客户端,服务器程序之间的安全认证。例如,微软Windows2000以后的系统认证过程就是基于Kerberos的。
为什么叫Kerberos,Kerberos传说是希腊神话中的守护地狱的一条有三个头的大狗,貌似在哈利波特第一部<哈利波特与魔法石>也有一只三头狗。三个头代表了Kerberos协议中的三方,Client,Server和KDC.
图片出处: http://mccltd.net/blog/?p=1053
网上对Kerberos的协议介绍有好多,http://blog.csdn.net/wulantian/article/details/42418231这篇博客是讲的比较透彻深入的,然而读下来恐怕还是比较烧脑,时间一长恐怕也就忘记了。本文中对Kerberos的介绍会通过一个简单的例子来进行,来帮助粗线条地理解Kerberos的认证方式,会和具体的协议细节有所差异。
我们假设一个场景,战争年代,有两个地下工作者张三,李四在被派到某处从事秘密工作,现在张三因为工作需要,找到了开酒馆掩护身份的酒馆老板李四,张三现在要做的事情,就是向李四证明我就是张三,不是钓鱼执法的,这是一个典型的认证的过程。
那怎么做呢?张三,李四的派出机构早就给他们设计好了认证过程,在这里的派出机构就是Kerberos协议中的KDC,比如微软的AD域服务器。在两人出发之前,发给了每个人一把钥匙(对应用户密码或者密码hash数值),派出机构也保留了一把备用钥匙(AD域服务器上保存着每个域用户的密码或者密码hash数值)。张三,李四就分别对应client和server了。
1. 张三要向派出机构报告一下:我要和李四接头,给我一个接头暗号呗。
2. 派出机构收到张三要和李四接头的请求以后,就发了两个小盒子给张三,并且上了锁,只能用两人自己的钥匙才能打开。
第一个盒子里面有一张纸条写着接头暗号:宝塔镇河妖。张三的钥匙可以打开这个盒子
第二个盒子里面有两张纸条,一张纸条也写着接头暗号:宝塔镇河妖。第二张纸条写着:来人是张三。zh只有李四的钥匙才能打开这个盒子。张三是打不开这个盒子的,确保张三不会篡改里面的内容。
3. 张三收到两个小盒子以后,就用自己的钥匙打开了第一个小盒子,看到接头暗号:宝塔镇河妖。
4. 然后张三就带着第二个盒子去找开酒馆的李四了,见到李四,张三把第二个盒子交给李四,并且说出了接头暗号:宝塔镇河妖,并且宣称自己是张三。
5. 李四用自己的钥匙打开了张三带给他的盒子,看到了接头暗号是宝塔镇河妖。然后又看到另外一张纸条上写着来人是张三。嗯,都对得上。他就是张三,那现在先把酒摆上喝点,咱们谈谈下一步的工作安排吧。
这个例子用来讲述Kerberos的基本的工作原理,当然Kerberos协议要比这个例子复杂的多。所以您可千万别较真,要是我钥匙丢了怎么办,有人把小盒子掉一个包之类的,该怎么办?这些就是Kerberos协议要进一步解决的问题了,就需要您自己去看Kerberos协议的细节了。
关于作者:Sam Zhao,EUC解决方案部门经理。在软件开发,测试,项目管理方面有13年IT从业经历,发表过五个专利以及合著书一部