单点登录登出是门户实现方案很重要的一个环节,通过单点登录来保证一次登录访问所有的应用系统,比如常用的方案是开源的CAS单点登录解决方案,这是耶鲁大学的开源项目,详细配置请看我的博客http://blog.csdn.net/ynwso/article/category/3220653
通常单点登录的过程应该是下面这样:
1. 用户访问系统A,被跳转到CAS登录页面(系统A应用要有CAS的客户端包,并在系统A增加CAS的过滤器)。
2. 用户登录 CAS成功,跳转回系统A,并附带上ST(CAS会在服务端保存TGT,并把TGT的ID作为cookie写到用户的浏览器,同时用TGT签发一个ST返回)。
3. 系统A去CAS端验证ST,如果ST有效,则可以访问系统A
4. 用户访问系统B, 被跳转至CAS,CAS发现有TGT的cookie值 ,于是查找是否存在有效的TGT,有则签发一个ST返回,同步骤2
5. 系统B去CAS端验证ST,同步骤3
登出的过程是
1. 系统登出系统B, 系统B调用CAS的登出地址
2.用户成功登出,CAS清除自己保存的TGT和用户的浏览器cookie,并根据之前的登入记录,分别调用系统A和B的URL,后面会跟一个参数logoutRequest
3.系统A和系统B都被登出(A和B都应该要增加CAS的登出过滤器和session监听器,登出过滤器要在登入过滤器之前,过滤器拦截到带有logoutRequest参数的请求会执