单点登录 插件方式
同事整理的插件方式:
流程体:1、用户UAP登录的index.jsp页面
2、UAP系统
3、应用系统列表appList.jsp(这是具体的应用系统的url)
4、具体的应用系统(这里放了UAP的plugin的插件,主要用于与 UAP通信)
5、客户端(为浏览器)
单点登录流程:首先用户是通过index.jsp登录到appList.jsp,这时UAP会根据用户产生一个登录ticket,以userID及ticket、登录时间的方式存于数据库;当单击具体要登录的某个应用系统时,拿appList.jsp的appID传到UAP ,UAP会从cookies中得到userID及ticket,到数据库中查,如果查到了(说明用户是登录过的),就产生一个新的序列(一般叫票据AuthTicket)和登录时间存于另一个数据库表中,并且把AuthTicket发到具体的应用系统中,具体的应用系统因为是集成了我们事先的plugin的插件,所以plugin会把刚才得到的 AuthTicket通过socket发到UAP,UAP在数据库中找,如果找到了,就记录一下操作时间,得到相应的用户id,并且得到应该给应用系统提供的信息,返回到应用系统。这样票据验证就通过了,接下来就可以安全的操作了,之后的操作就与UAP无关了。
如何判定应用系统登录超时: UAP会一直有一个线程,定时删除过期的在数据库存的userID及AuthTicket记录(比如是1分钟一删,删除一些当认为登录超过2分钟或票据验证成功的――指有最后操作时间的);登录超时时,这时plugin插件就做了票据验证失败的响应,结束用户访问界面的权限。
注:每个应用系统会产生一个不同的ticket.
1 楼 clasp 2009-02-19 呵!研究下CAS或许你会有更好的解决方案! 2 楼 ych19850810 2009-02-19 clasp 写道
呵!研究下CAS或许你会有更好的解决方案!
看来或许仁兄在这方面研究颇深,我也听说过用CAS或者其他第三方的工具实现起来是比较方便,不过我们公司现在在单点登录以及统一身份认证服务器这样的产品,还没有考虑到用CAS。一起学习!