Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1007264
  • 博文数量: 442
  • 博客积分: 1146
  • 博客等级: 少尉
  • 技术积分: 1604
  • 用 户 组: 普通用户
  • 注册时间: 2010-11-04 12:52
个人简介

123

文章分类

全部博文(442)

文章存档

2017年(3)

2016年(15)

2015年(132)

2014年(52)

2013年(101)

2012年(110)

2011年(29)

分类: 网络与安全

2013-04-28 12:33:23

原文地址:Kerberos认证协议 作者:raochaoxun

                                     Kerberos认证

    什么是kerberos协议,估计很多人都没有通过,实际上它应用非常广泛,在windows域和许多开发平台上应用很广。它应用最多的是统一登录SSO(Single Sign On)框架上应用。 

    什么是SSO,举个例子来说,一个公司开始有个系统A,用户每次登陆都要输入用户名密码鉴权。用来确认用户是合法用户,同时也要确定服务是合法服务,如何确定服务是合法服务呢,通常方法是验证过程不要使用明文密码。用密码(或含有密码的信息和过期时间)做密钥加密得到一串信息,作为验证凭证。这样,如果是非法服务器,没有用户密码信息,当然就解不开。这样就达到双方互相认证的目的。 

    当有一天公司扩张了,又建立了一个系统B,是不是B又搞一套认证系统呢。那B是又搞一套用户名密码,还是把A的用户名密码库copy过来,一般情况下,A是不同意copy的,一是这份数据不能太多分支在其他地方,安全性非常不好。而是还要保持更新。   

    再搞一套用户名密码系统,太挫了。是不倒是后出了系统CDEF…;都要搞个新密码。用户记住密码烦都烦死了。再说这样的设计,拿的出手吗。 

    于是乎就有SSO系统的诞生,就是“一次登录,到处通行”。在B系统登录,通行ABCD…; 或者在C系统登录,通行ABCD… 

    有人说,那还不简单。建一个session服务器,所有系统到这台机器上认证session。不久解决了。貌似解决方法很简单。但是这里有点问题是:每个系统处理每个请求都要先到session服务器去验证一下,查一下用户是否是合法用户。这样用户量大的话,性能是个问题。性能问题还好解决。严重的是安全问题。假如用户在A系统认证过,分配一个session,然后访问B系统,携带上sessionB拿着session去认证系统校验。这样可以确认A是合法用户,但是用户又如何确认B是合法服务,而不是钓鱼服务呢。 

    Kerberos就是解决这样问题,提供统一登录服务。即保证了性能(每个系统自己校验和分配session),有保证安全性(防止用户和服务之间互相欺骗)。关于kerberos个人看个不少资料,觉得最经典的就是那个kerberos对话。有兴趣的网上搜一下。我这里整理了4PPT,代表认证的4个步骤。比资料容易懂。

   

 

 

 

clip_image004clip_image002

 

clip_image006

 

clip_image008

 

clip_image010

 

阅读(1069) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~