在单点登录时,如果A应用已登录,访问B应用时。
Yale CAS的单点登录机制是:
用户访问单点登录客户端时,如果session.getAttribute("edu.yale.its.tp.cas.client.filter.user") == null,并且request中的ticket也为空,会执行以下步骤
1. 客户端-->服务器端 https://xx.com/login
2. 如果已登录,单点登录的login会调回,并带来ticket。
3. 客户端调用服务器端的ServiceValidator得到登录的username。放到session中。
4. 继续后面的工作。
目前有多个客户端需要用到单点登录机制,但登录需要
不是强制的(用户想登录就登录),而且访问量巨大。如果用现有的CAS Filter,如果还是访问单点登录服务器的login页面(而且不是强制用户登录嘛),或者其他转到单点登录服务器的方式。会很挫,但现在单点登录是基于Cookie的,必须客户端自己访问才可以得到Ticket。。。
因为登录可能共享给合作方的,所以
共享cookie不可行。。。
我现在想单点登录服务器做一种机制,将用户request的唯一信息(ip、浏览器等信息组合出来的)、Ticket的对应信息放在Hashtable中。这样就可以判断是否同一个用户、同一个浏览器登录了。然而貌似不大可行,因为根据HttpServletRequest得不到足够信息保证用户唯一性。。。
有没有更好的机制?请赐教
难道不能在CAS基础上做了?但就算自己做应该还是一样要判定用户唯一性的!!
————————————————————
之前解决了,所以现在把解决方式放上来。
1. cas主动通知,参考了passport.sohu.com的搜狐通行证,通知到chinaren,17173,sohu等各个应用。我现在和sohu通行证是一样的做法了,做了跨域的登录通知,这个需要用到p3p,否则ie会有问题,我用httpwatch监控了sohu,也用了p3p。
2. 改造了中间流程之后,集成了CAS单点登录和 QQ、人人、支付宝的集成登录,并且以后只需要做导入第三方登录和回调的适配器即可,不需要改造核心流程,简化以后的开发。
3. 实现了类似淘宝的购买时如果未登录弹窗功能。而且还实现了弹窗的快速注册流程,大大提交了用户的注册比率。
————————————————————
之后的思考:因为当时我总是想着用Session保持登录状态,觉得这样对于电商网站来说更加安全,所以现在方案是用跨域通知的方式的,但其实还是很蹩脚。最近看了淘宝的登录和登录状态的保持才恍然大悟
1. 可以建一个应用,用于写cookie和保持cookie,对cookie信息进行验证的加密即可保持安全性。
2. 因为我这里大部分的类目页和产品页都是静态的,所以可以利用动静分离来解决。静态页应用不在强制登录的登录,动态加登录限制,静态应用的登录注册模块ajax登录信息,因为是同一个一级域名,所以不用担心跨越问题。
分享到:
相关推荐
在IT行业中,尤其是在Web开发领域,单点登录(Single Sign-On, SSO)是一种常见的身份验证机制,使得用户只需一次登录就能访问多个相互关联的应用系统。CAS(Central Authentication Service)是 Yale 大学开发的一...
"cas-server-3.5.2" 是一个用于实现单点登录(Single Sign-On, SSO)集成方案的软件包,具体版本为3.5.2。SSO是一种网络认证协议,它允许用户在一个应用系统中登录后,无须再次认证即可访问其他相互信任的应用系统。...
单点登录(Single Sign-On,简称 SSO)是一种允许用户在一个系统中登录后,即可访问其权限范围内的多个系统的身份验证技术。它简化了用户在多系统环境中的登录流程,提高了用户体验,同时也降低了管理多个独立登录...
CAS处理过滤器用于处理Yale CAS服务器的单点登录功能。HTTP基本授权过滤器则处理基于HTTP基本认证的身份验证。集成过滤器管理认证信息在请求之间的传递,如将用户信息存储在HTTP会话中。最后,安全强制过滤器检查...
3. CAS处理过滤器:处理CAS服务票据,验证Yale CAS服务器的单点登录状态。 4. HTTP基本授权过滤器:处理使用HTTP基本认证的身份验证请求。 5. 集成过滤器:管理认证信息在请求之间的存储,如HTTP会话。 6. 安全强制...
3. **CAS处理过滤器**:处理来自Yale CAS(中央认证服务)的单点登录服务票据,验证用户身份。 4. **HTTP基本授权过滤器**:处理基于HTTP基本认证的请求,进行用户身份验证。 5. **集成过滤器**:负责在多个请求之间...