实现多系统之间的单点登录到底能给小弟我们带来多少好处

实现多系统之间的单点登录到底能给我们带来多少好处
今天看了一下cas的实现方案(Central Authentication Service)。发现它实际上也就是帮我们在多个系统之间共享了一下用户的登录名。
对于用户来说确实是减少了在多个系统之间重复输入用户名,密码的工作量。
但是对于程序开发者而言,除集中了一部分的用户帐号管理功能之外,还有什么其他的好处吗?

假如有a,b两个系统,每个系统的用户表里除了最基本的登录名及密码之外还各自关联了一些其他的用户信息,并且还与
系统内部的其他表存在某种关联,例如生成报表时需要用到特定的用户属性等等。
那采用了单点登录方案之后,我还是要维护各自系统内部的用户数据,并且还要实现系统内部的用户数据与cas server端
的用户数据同步(同步代价也不小吧)。就是说想做到用户的集中管理不是太现实的。

再说到用户的权限管理,每个系统对这个多系统之间的共享账户肯定是分配了不同的权限,应用系统拿到cas server返回的用户名之后还是要做当前系统的权限分配。

那多个系统之间进行界面(ui)级整合呢?我能设计一个通用的系统界面为所有的新老系统提供统一的用户管理,统
一的权限管理吗?

是不是可以这么说,对于单点登录这种系统整合方案,就是解决了少输入几次用户名,密码这个问题,到最后实际上到是增加了系统实现及整合的复杂度。

有什么好的解决方案可以将新老系统整合进一个通用的企业门户吗?

思路有点乱,写的也乱,大家有什么想法都交流一下吧。
1 楼 czx566 2009-01-07  
SOA~~
2 楼 xuyao 2009-01-07  
lz说对了,就是方便用户麻烦开发
3 楼 andot 2009-01-07  
单点登录不一定要权限集中,单点登录最好的解决方案是用户映射,而不是用户集中管理。各个系统都拥有自己的用户和权限管理部分,然后将各个系统的用户映射到统一登录服务器上(甚至用户名都无需一致),然后登录服务器只负责登录管理,具体的权限管理还是交给各个应用系统去完成,这样是最方便的,这样不但各个系统可以独立开发,互不影响,而且可以将已有的系统通过增加几行简单的代码就可以集成到单点登录系统当中。

这里有一个通过这种方式实现的单点登录系统:http://bbs.phpchina.com/thread-99990-1-1.html

这个不是我写的,也不是 Java 的。不过他用的那个PHPRPC (不好意思的说,这个 PHPRPC 是我写的)是支持许多语言的(包括 Java),因此很容易移植到 Java 上来,甚至可以跟其它语言开发的系统集成到一起。
4 楼 jef 2009-01-08  
andot 写道
单点登录不一定要权限集中,单点登录最好的解决方案是用户映射,而不是用户集中管理。各个系统都拥有自己的用户和权限管理部分,然后将各个系统的用户映射到统一登录服务器上(甚至用户名都无需一致),然后登录服务器只负责登录管理,具体的权限管理还是交给各个应用系统去完成,这样是最方便的,这样不但各个系统可以独立开发,互不影响,而且可以将已有的系统通过增加几行简单的代码就可以集成到单点登录系统当中。

这里有一个通过这种方式实现的单点登录系统:http://bbs.phpchina.com/thread-99990-1-1.html

这个不是我写的,也不是 Java 的。不过他用的那个PHPRPC (不好意思的说,这个 PHPRPC 是我写的)是支持许多语言的(包括 Java),因此很容易移植到 Java 上来,甚至可以跟其它语言开发的系统集成到一起。


恩,说的有道理,有些思路了。我在想如果真要做到多个系统之间界面级整合,包括统一的用户管理,权限管理,也可以
通过把子系统的用户数据及权限数据映射到cas server端,然后在开发一个cas server端的后台管理系统,通过这个系统实现多个系统之间界面级的整合。我说的界面级整合就是指左边是模块,功能菜单,右边是子系统界面那种(iframe实现)。
不过把系统想的太理想了实现起来还是挺麻烦。

PS:看了下PHPRPC,先崇拜一下 呵呵 实现多系统之间的单点登录到底能给小弟我们带来多少好处
5 楼 andot 2009-01-08  
jef 写道
andot 写道
单点登录不一定要权限集中,单点登录最好的解决方案是用户映射,而不是用户集中管理。各个系统都拥有自己的用户和权限管理部分,然后将各个系统的用户映射到统一登录服务器上(甚至用户名都无需一致),然后登录服务器只负责登录管理,具体的权限管理还是交给各个应用系统去完成,这样是最方便的,这样不但各个系统可以独立开发,互不影响,而且可以将已有的系统通过增加几行简单的代码就可以集成到单点登录系统当中。

这里有一个通过这种方式实现的单点登录系统:http://bbs.phpchina.com/thread-99990-1-1.html

这个不是我写的,也不是 Java 的。不过他用的那个PHPRPC (不好意思的说,这个 PHPRPC 是我写的)是支持许多语言的(包括 Java),因此很容易移植到 Java 上来,甚至可以跟其它语言开发的系统集成到一起。


恩,说的有道理,有些思路了。我在想如果真要做到多个系统之间界面级整合,包括统一的用户管理,权限管理,也可以
通过把子系统的用户数据及权限数据映射到cas server端,然后在开发一个cas server端的后台管理系统,通过这个系统实现多个系统之间界面级的整合。我说的界面级整合就是指左边是模块,功能菜单,右边是子系统界面那种(iframe实现)。
不过把系统想的太理想了实现起来还是挺麻烦。

PS:看了下PHPRPC,先崇拜一下 呵呵 实现多系统之间的单点登录到底能给小弟我们带来多少好处


嗯,我还真见过你说的这样实现的系统,原来我还在学校工作,学校要上数字化校园系统时,来竞标的几个公司就是提供了这样的实现,但问题是,上了这样的系统就意味着数字化校园系统要完全在这样的一个框架下开发,而原来已有的系统(比如原来的教务系统,学生管理系统等)则基本上无法集成进来,只能从头开发。另外一点就是在统一权限管理下开发各个子系统难度也很大,因为统一权限管理下很难做到细粒度的权限管理,而如果每上一个子系统就根据子系统的特征往同统一权限管理系统中加这个子系统的权限特征的话,又会让统一权限管理变得混乱而臃肿。因此,学校的这个数字化校园计划在我离开学校时,连第一期的验收都还没有通过。
6 楼 rmn190 2009-02-21  
关注, 这些天也在因为研究Acegi而牵连到这个单点登录的概念, 一开始觉得没什么复杂的, 但看了各们的讨论后再细想下问题挺多的.
7 楼 suntongo 2009-02-28  
单点登录的意义有二:
1、方便用户(这是应用系统不断追求的目标之一)。
2、专业化,使得认证方式的更新成本最低,比如电子商务系统中,需要在口令方式的基础上增加更安全的数字证书认证方式或者一次性口令认证方式,那么只需要升级SSO支持服务器的软件而其他应用系统完全不需要逐个去升级。
如果SSO还要兼顾各应用系统的细节(哪怕是纯界面的兼顾),只怕带来的问题比得到的好处要多。
8 楼 fjlyxx 2009-03-01  
呵呵 主要需求  你也不希望每天输入不同的密码用户登入多个业务系统  其次还能做到统一的资源用户管理  还有就是可以开发门户系统卖钱  主要还是满足上级单位集权的需求啦.
9 楼 jef 2009-03-02  
其实我最后也明白了,不能想得太理想。
系统使用cas进行了整合,最后总了几点。

1,单点登录仅仅帮助我们在各个子系统中间安全的共享了一下用户名,省去了用户重复登陆的麻烦,统一了用户帐户的管理,至于用户在每个系统中的权限分配,还是继续交 给子系统完成吧。可以开发一个cas server端的集成界面(portal),方便用户在各个子系统中间的快速切换。

2,为了完善cas server的用户管理功能,需要在cas 的server,client端各自开放几个调用接口,保证子系统与cas server端的账户信息同步。

3,改造老系统时尽量为portal的集成开发新的访问入口(而不是去修改以前的代码使之兼容),这样既可以从集成portal访问,又可以从原有的访问地址访问。
10 楼 chris45 2009-04-13  
请问下在cas 的server,client端各自开放几个调用接口,保证子系统与cas server端的账户信息同步这个具体如何实现呢?
11 楼 gembler 2009-04-13  
chris45 写道
请问下在cas 的server,client端各自开放几个调用接口,保证子系统与cas server端的账户信息同步这个具体如何实现呢?

一般情况下只共享username+password,详细信息交给子平台维护。
12 楼 chris45 2009-04-15  
就是实现在修改应用用户名或者密码的时候需要同时修改CAS服务器上的应用系统用户表的用户名或密码  及在修改CAS服务器上的应用系统用户表的用户名或密码时修改应用的用户名或者密码,是这样吧?
13 楼 guoxu1231 2009-04-15  
冗余的东西总会发出bad smell.

从安全性角度来说,SSO可以实现统一的数据加密,密码管理策略,提高整体安全性.