分类: 网络与安全
2012-07-12 23:27:31
什么是kerberos协议,估计很多人都没有通过,实际上它应用非常广泛,在windows域和许多开发平台上应用很广。它应用最多的是统一登录SSO(Single Sign On)框架上应用。
什么是SSO,举个例子来说,一个公司开始有个系统A,用户每次登陆都要输入用户名密码鉴权。用来确认用户是合法用户,同时也要确定服务是合法服务,如何确定服务是合法服务呢,通常方法是验证过程不要使用明文密码。用密码(或含有密码的信息和过期时间)做密钥加密得到一串信息,作为验证凭证。这样,如果是非法服务器,没有用户密码信息,当然就解不开。这样就达到双方互相认证的目的。
当有一天公司扩张了,又建立了一个系统B,是不是B又搞一套认证系统呢。那B是又搞一套用户名密码,还是把A的用户名密码库copy过来,一般情况下,A是不同意copy的,一是这份数据不能太多分支在其他地方,安全性非常不好。而是还要保持更新。
再搞一套用户名密码系统,太挫了。是不倒是后出了系统C,D,E,F…;都要搞个新密码。用户记住密码烦都烦死了。再说这样的设计,拿的出手吗。
于是乎就有SSO系统的诞生,就是“一次登录,到处通行”。在B系统登录,通行A,B,C,D…; 或者在C系统登录,通行A,B,C,D…。
有人说,那还不简单。建一个session服务器,所有系统到这台机器上认证session。不久解决了。貌似解决方法很简单。但是这里有点问题是:每个系统处理每个请求都要先到session服务器去验证一下,查一下用户是否是合法用户。这样用户量大的话,性能是个问题。性能问题还好解决。严重的是安全问题。假如用户在A系统认证过,分配一个session,然后访问B系统,携带上session。B拿着session去认证系统校验。这样可以确认A是合法用户,但是用户又如何确认B是合法服务,而不是钓鱼服务呢。
Kerberos就是解决这样问题,提供统一登录服务。即保证了性能(每个系统自己校验和分配session),有保证安全性(防止用户和服务之间互相欺骗)。关于kerberos个人看个不少资料,觉得最经典的就是那个kerberos对话。有兴趣的网上搜一下。我这里整理了4张PPT,代表认证的4个步骤。比资料容易懂。
wojiushiwo9872013-11-03 18:50:21
分析的很好!
Kerberos认证相关问题思路请教:
在Windows客户端与Windows服务器的kerberos认证过程中,通过第二阶段客户端向KDC(密钥分配中心)的TGS数据交互,客户端获取到了可以与服务端会话的Service_key和Ticket。
如果服务器端KDC用开源的Samba实现(前提Samba内实现了MIT的kerberos协议),是不是我们就能读取到Service_key了呢?
或者您有获取Service_key的其他思路?期待您的回复!