kerberos认证协议
2016-01-07 19:30
190 查看
什么是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个步骤。比资料容易懂。
什么是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个步骤。比资料容易懂。
相关文章推荐
- startActivityForResult详解
- OK6410 Qt Segment fault
- 编辑距离问题求解思路
- Eclipse背景颜色修改
- Lucky 2048 - The secret of being lucky
- Oracle查询表空间大小
- Linux下用ifconfig命令设置IP、掩码、网关
- LeetCode Permutaions II
- 05.C#委托(delegate)的使用
- [读书笔记]《APP研发录》之App图片缓存设计
- pyqt中信号与槽的参数传递。
- 20160107 近期情况反省= =
- Android应用开发Scroller详解及源码浅析
- edgesForExtendedLayout
- java基础-java泛型精解
- 算子
- 一些hash算法
- 作文评分相关工作
- 做题记录
- 数据结构--排序-查询-二叉树各种遍历-求深度