Kerberos 学习笔记

最近在工作中调试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.      派出机构收到张三要和李四接头的请求以后,就发了两个小盒子给张三,并且上了锁,只能用两人自己的钥匙才能打开。
第一个盒子里面有一张纸条写着接头暗号:宝塔镇河妖。张三的钥匙可以打开这个盒子
第二个盒子里面有两张纸条,一张纸条也写着接头暗号:宝塔镇河妖。第二张纸条写着:来人是张三。

3.      张三收到两个小盒子以后,就用自己的钥匙打开了第一个小盒子,看到接头暗号:宝塔镇河妖。

4.      然后张三就带着第二个盒子去找开酒馆的李四了,见到李四,张三把第二个盒子交给李四,并且说出了接头暗号:宝塔镇河妖,并且宣称自己是张三。

5.      李四用自己的钥匙打开了张三带给他的盒子,看到了接头暗号是宝塔镇河妖。然后又看到另外一张纸条上写着来人是张三。嗯,都对得上。他就是张三,那现在先把酒摆上喝点,咱们谈谈下一步的工作安排吧。

这个例子用来讲述Kerberos的基本的工作原理,当然Kerberos协议要比这个例子复杂的多。所以您可千万别较真,要是我钥匙丢了怎么办,有人把小盒子掉一个包之类的,该怎么办?这些就是Kerberos协议要进一步解决的问题了,就需要您自己去看Kerberos协议的细节了。

关于作者:Sam Zhao,EUC解决方案部门经理。在软件开发,测试,项目管理方面有13年IT从业经历,发表过五个专利以及合著书一部

时间: 2024-11-08 17:24:42

Kerberos 学习笔记的相关文章

NodeJS学习笔记(一)——搭建开发框架Express,实现Web网站登录验证

JS是脚本语言,脚本语言都需要一个解析器才能运行.对于写在HTML页面里的JS,浏览器充当了解析器的角色.而对于需要独立运行的JS,NodeJS就是一个解析器.每一种解析器都是一个运行环境,不但允许JS定义各种数据结构,进行各种计算,还允许JS使用运行环境提供的内置对象和方法做一些事情.例如运行在浏览器中的JS的用途是操作DOM,浏览器就提供了document之类的内置对象.而运行在NodeJS中的JS的用途是操作磁盘文件或搭建HTTP服务器,NodeJS就相应提供了fs.http等内置对象.E

端口相关知识学习笔记

端口相关知识学习笔记 端口相关知识学习笔记 本周主要精力是放在挂接上,所以知识矩阵的学习回归到根本上,所以这周发的学习笔记是关于计算机端口的相关介绍. 有过一些黑客攻击方面知识的读者都会知道,其实那些所谓的黑客并不是像人们想象那样从天而降,而是实实在在从您的计算机"大门"中自由出入.计算机的" 大门"就是我们平常所说的"端口",它包括计算机的物理端口,如计算机的串口.并口.输入/输出设备以及适配器接口等(这些端口都是可见的),但更多的是不可见的软

vector 学习笔记

vector 使用练习: /**************************************** * File Name: vector.cpp * Author: sky0917 * Created Time: 2014年04月27日 11:07:33 ****************************************/ #include <iostream> #include <vector> using namespace std; int main

Caliburn.Micro学习笔记(一)----引导类和命名匹配规则

Caliburn.Micro学习笔记(一)----引导类和命名匹配规则 用了几天时间看了一下开源框架Caliburn.Micro 这是他源码的地址http://caliburnmicro.codeplex.com/ 文档也写的很详细,自己在看它的文档和代码时写了一些demo和笔记,还有它实现的原理记录一下 学习Caliburn.Micro要有MEF和MVVM的基础 先说一下他的命名规则和引导类 以后我会把Caliburn.Micro的 Actions IResult,IHandle ICondu

jQuery学习笔记(一):入门

jQuery学习笔记(一):入门 一.JQuery是什么 JQuery是什么?始终是萦绕在我心中的一个问题: 借鉴网上同学们的总结,可以从以下几个方面观察. 不使用JQuery时获取DOM文本的操作如下: 1 document.getElementById('info').value = 'Hello World!'; 使用JQuery时获取DOM文本操作如下: 1 $('#info').val('Hello World!'); 嗯,可以看出,使用JQuery的优势之一是可以使代码更加简练,使开

[原创]java WEB学习笔记93:Hibernate学习之路---Hibernate 缓存介绍,缓存级别,使用二级缓存的情况,二级缓存的架构集合缓存,二级缓存的并发策略,实现步骤,集合缓存,查询缓存,时间戳缓存

本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱好者,互联网技术发烧友 微博:伊直都在0221 QQ:951226918 -----------------------------------------------------------------------------------------------------------------

Activiti 学习笔记记录(三)

上一篇:Activiti 学习笔记记录(二) 导读:上一篇学习了bpmn 画图的常用图形标记.那如何用它们组成一个可用文件呢? 我们知道 bpmn 其实是一个xml 文件

HTML&CSS基础学习笔记8-预格式文本

<pre>标签的主要作用是预格式化文本.被包围在 pre 标签中的文本通常会保留空格和换行符.而文本也会呈现为等宽字体. <pre>标签的一个常见应用就是用来表示计算机的源代码.当然你也可以在你需要在网页中预显示格式时使用它. 会使你的文本换行的标签(例如<h>.<p>)绝不能包含在 <pre> 所定义的块里.尽管有些浏览器会把段落结束标签解释为简单地换行,但是这种行为在所有浏览器上并不都是一样的. 更多学习内容,就在码芽网http://www.

java/android 设计模式学习笔记(14)---外观模式

这篇博客来介绍外观模式(Facade Pattern),外观模式也称为门面模式,它在开发过程中运用频率非常高,尤其是第三方 SDK 基本很大概率都会使用外观模式.通过一个外观类使得整个子系统只有一个统一的高层的接口,这样能够降低用户的使用成本,也对用户屏蔽了很多实现细节.当然,在我们的开发过程中,外观模式也是我们封装 API 的常用手段,例如网络模块.ImageLoader 模块等.其实我们在开发过程中可能已经使用过很多次外观模式,只是没有从理论层面去了解它. 转载请注明出处:http://bl