论坛首页 综合技术论坛

关于CAS实现单点登录的思考

浏览 22472 次
精华帖 (1) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (1)
作者 正文
   发表时间:2011-05-04   最后修改:2011-05-04

 

[quote="wuyakenihao"]你好关于这个CAS我没了解过,但是我们的网站全部实现了SSO,我们是给移动做项目的,系统与系统之间就实现这个功能,其实这个不用想的太麻烦,只要明白其中的原理就可以了,我给你说下我们系统是如何实现吧,其实告诉别的系统你在这个系统登录关键就是你的会话要统一。我们是有一个server断当用户在系统A不管登录否这个时候要和server建立一个请求,目的是为了保证会话的统一。这个时候如果用户登录了就告诉server段用户在系统A登陆了,这个时候你会发现,你当前系统A和server的会话是统一的,剩下就是有你的server端告诉别的系统你在A登录了。在别系统中注册你的用户信息,这样你只要在系统A登录点击到别的系统也是登录状态,不知道你理解我的意思不?[/quote]

 

 

的确不是很明白,

 

  1. 为什么在访问B系统时,B系统就是登录状态呢,你的SessionId或用户名是怎么传上去的?
  2. Server端通知是可以实现,通知后我不知道您采用的什么方式,但是如果采用Session方式来管理,如果用户从来都不访问B系统或加入单点登录的系统很多个,会不会影响性能?再者说,如果我在操作A系统时,一直不访问B系统,会话是不是超时了?等超时后,我再访问B系统时,怎么办呢
  3. 加入新的单点登录系统,服务器端还要配置修改吧(因为您的实现是Server去主动通知各子系统的)
所以,我觉得还是在访问B系统时,B系统再与Server端通讯应该是比较好的解决方案,就像CAS一样。

 

 

0 请登录后投票
   发表时间:2011-05-06  
“所以,我觉得还是在访问B系统时,B系统再与Server端通讯应该是比较好的解决方案,就像CAS一样。”
赞同这种,没接触过CAS,在业务上,我是这样理解的:
A系统和B系统都有自己的角色权限管理等,但这些都保存在Server上,
初次访问A登陆的时候,请求Server看是否登陆,如果已经登陆就返回A系统所需的用户角色权限信息,存放在A的session,Server只记录此用户已经登陆,不需要在Session保存任何跟A系统有关的信息,包括用户权限等信息。
访问B同理,请求Server,Server判断此用户是否登录,如果已经登陆,取出B系统所需的角色权限等信息,返回给B,B保存信息在自己系统的Session,供自己使用。

在某系统下登出的时候,清理当前系统Session,通知Server用户已经登出,Server注销用户登出信息。

如此的话,用户每当第一次访问某系统的时候,此时当前系统Session应该是空的,都去Server检查一下登陆状态。

Server的Session只存已登录用户的用户名,收到登出通知就删掉相应的用户名。
这样Server的内存应该能容纳足够多的用户登陆状态信息,如果不行就考虑持久化到硬盘。

上面只是我纸上谈兵的看法,大家多包涵。。。
0 请登录后投票
   发表时间:2011-05-08  
CAS做单点登录已有很我现成的客户端,做CAS前,最好先统一用户。
0 请登录后投票
   发表时间:2011-05-09  
jsp_boy 写道
用一个LDAP服务器,如Active Directory来集中管理用户信息。CAS跟LDAP结合进行身份验证,各个应用自己维护各自的用户信息。当然这会涉及到各个应用与LDAP服务器之间用户信息同步的问题。


LDAP实现CAS是个标准的企业级实现,
在互联网上就不好用了。
0 请登录后投票
   发表时间:2011-05-10  
fandayrockworld 写道
lovit 写道

这个注册功能,就像登录面,根本就不用考虑不同的语言啊,你登录页不是也在CAS Server端吗??

假如现在有两个client端,分别是PHP和java做的,那么你在各个client端调用CAS现有的功能,要加入CAS提供的不同的client端实现(PHP的加PHP的client端实现,JAVA的加JAVA的client端实现),所以,你要是再给CAS加功能的话,那请问,你是不是要在这些CAS提供的client端实现里也要加东西才能调用?
请仔细考虑一下。。。


cas不负责业务功能吧。。。  主要还是注册和登录验证  其他的东西你干嘛放进去!
0 请登录后投票
   发表时间:2011-05-11   最后修改:2011-05-11
haojiahero 写道
fandayrockworld 写道
lovit 写道

这个注册功能,就像登录面,根本就不用考虑不同的语言啊,你登录页不是也在CAS Server端吗??

假如现在有两个client端,分别是PHP和java做的,那么你在各个client端调用CAS现有的功能,要加入CAS提供的不同的client端实现(PHP的加PHP的client端实现,JAVA的加JAVA的client端实现),所以,你要是再给CAS加功能的话,那请问,你是不是要在这些CAS提供的client端实现里也要加东西才能调用?
请仔细考虑一下。。。


cas不负责业务功能吧。。。  主要还是注册和登录验证  其他的东西你干嘛放进去!

这位兄弟,这不就是在讨论注册要不要加在CASServer端吗?都不看,还在那激动,呵。。
0 请登录后投票
   发表时间:2011-05-16  
cas只用作sso
用户注册管理可以考虑单独作为独立的应用--用户管理,  用户信息同步问题可以让各个应用系统提供接口,在用户管理系统中通知各应用系统(可以考虑使用观察者模式)
0 请登录后投票
   发表时间:2011-05-19  
不同的系统拥有着自己本身的用户信息,不可能通用,,,,

但是在用户登录验证时,Cas有提供一个验证链,可以进行多个数据表验证。。
0 请登录后投票
   发表时间:2011-06-16  
单点登录这个功能还是天翎myApps柔性软件平台做的比较出色
0 请登录后投票
论坛首页 综合技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics