`
liang30890136
  • 浏览: 1561 次
  • 性别: Icon_minigender_1
  • 来自: 南京
文章分类
社区版块
存档分类
最新评论

Yale CAS单点(不强制)登录问题

阅读更多
在单点登录时,如果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登录信息,因为是同一个一级域名,所以不用担心跨越问题。
分享到:
评论
1 楼 liang30890136 2011-04-16  
OK,有解决思路了。

改进登录流程,就是现有的Spring webflow,重新配置流程,在流程中初始化各个应用的session(是否登录,记录在session中!),不改变现在cas服务器校验cookie的认证和授权方式。不再考虑共享cookie,毕竟cas服务器的cookie是加密的,这样做非常安全,没必要改。

从模型上来说
以前是:进公园,那么去游乐场的时候会强制校验是否已经付钱,必须回到门口(CAS服务器)拿到票,然后才知道持票人是谁(AuthenticatedUser),然后进入游乐园。
现在:不是强制登录的,而且甚至非登录用户也可做一些业务,如果登录,那么在公园门口付钱,门口就给各个内场的门票。(因为这里必须利用用户的浏览器,目前方案是在流程中加一个view-state,就是一个页面,里面iframe各个应用的初始化登录状态的Servlet,这个页面完成后自动传入进入单点登录前的页面),这样一次性引导用户拿票,后面会测试一下性能,因为考虑到通讯很小(服务器在局域网),而且都是内存中应该不会是瓶颈。这样规划还有个好处,就是如果A、B、C3个应用,如果刚好B应用挂了,所以没通知到,那么B再登陆,转入登录流程,也可以迅速恢复登录状态,流程是通的、符合逻辑的,去掉了CAS Filter。

Over,下周继续工作,希望可以花3天攻克。
以前没有接触Spring的MVC和workflow,所以前几天看CAS的源码费了不少力气,一个星期基本上没有障碍了,而且改了很多源码,都合乎自己的设想,所以自己已经很满足,还要努把力,也希望自己这个帖子可以帮助后面有疑问的人!

相关推荐

    Yale CAS实现单点登陆的客户端和服务端源码

    Yale CAS实现单点登陆的客户端源码和服务端源码,客户端cas-client-3.1.10代码和cas-server-3.4.2.1代码

    基于Yale_CAS的单点登录的设计与实现

    基于Yale_CAS的单点登录系统通过分离认证与授权、减轻认证服务器的负担以及减少网络传输等方式,有效地解决了传统认证机制中的问题。这种方案不仅提高了系统的安全性,也极大地改善了用户的使用体验。未来随着技术的...

    Yale CAS SSO JAVA Client

    总之,Yale CAS SSO JAVA Client是实现基于CAS的单点登录解决方案的重要工具,它提供了方便的API和配置选项,帮助Java开发者在不牺牲安全性的前提下,为用户提供无缝的登录体验。通过深入理解和合理利用这些资源,...

    在Tomcat中使用Yale CAS实现单点登陆(SSO)

    总的来说,通过在Tomcat服务器上部署Yale CAS,并进行相应的SSL配置,可以为多个Web应用提供安全、便捷的单点登录体验。这个过程涉及到了Web容器的管理、SSL证书的生成和配置,以及客户端过滤器的设定,是实现SSO的...

    Yale CAS Server的部署及cas-java-client 3.2的应用

    7. **单点登出**:CAS Server支持单点登出(Single Log Out, SSO),客户端需要监听CAS Server发出的登出请求,以便同步地结束本地会话。 总的来说,Yale CAS Server和cas-java-client 3.2的结合使用,使得开发者...

    Yale CAS 3.3实现SSO详细教程。

    Yale CAS(Central Authentication Service)是一种广泛使用的开源单点登录(Single Sign-On,简称SSO)系统,它允许用户通过一个认证界面访问多个应用系统,而无需为每个系统单独登录。本教程将详细介绍如何在Yale ...

    CAS单点登录操作文档

    CAS 是 Yale 大学发起的一个开源项目,旨在为 Web 应用系统提供一种可靠的单点登录方法,CAS 在 2004 年 12 月正式成为 JA-SIG 的一个项目。CAS 具有以下特点: • 开源的企业级单点登录解决方案。 • CAS Server ...

    耶鲁CasServer单点登录教程

    Yale Central Authentication Service (CAS) 是一个开源的身份验证框架,由耶鲁大学开发,主要用于实现单点登录(Single Sign-On, SSO)。SSO允许用户在一个系统上登录后,无需再次认证即可访问其他多个相互信任的...

    cas单点登录

    CAS(Central Authentication Service)是 Yale 大学开源的一个单点登录协议,它提供了一种集中式的认证方式,简化了多应用系统的身份验证流程。 **单点登录原理** 单点登录的核心在于一个中心认证服务器(CAS ...

    Weblogic使用YALE(耶鲁)CAS实现SSO单点登录 的方法.doc

    Weblogic 使用 YALE CAS 实现 SSO 单点登录的方法 一、Yale CAS 简介 Yale CAS 是耶鲁大学开发的一种开源的单点登录(SSO)解决方案,提供了一个通用的身份验证框架,允许用户使用单个身份验证来访问多个应用程序。...

    Yale CAS SSO DotNet Client

    "Yale CAS SSO DotNet Client" 是一个专为.NET框架设计的客户端库,用于集成耶鲁大学(Yale)的中央认证服务(Central Authentication Service, CAS)。CAS是一种开源的身份验证协议,它允许用户通过单一登录...

    java-cas单点登录服务端

    CAS 是 Yale 大学发起的一个开源项目,旨在为 Web 应用系统提供一种可靠的单点登录方法,CAS 在 2004 年 12 月正式成为 JA-SIG 的一个项目。CAS 具有以下特点: 开源的企业级单点登录解决方案。 CAS Server 为需要...

    CAS单点登陆配置手册

    ### CAS单点登录配置手册详解 #### 一、Yale CAS 概述 CAS (Central Authentication Service) 是由美国耶鲁大学发起的一项开源项目,它致力于为Web应用系统提供可靠且安全的单点登录(Single Sign-On, SSO)解决...

    cas单点登录技术

    CAS(Central Authentication Service)是 Yale 大学开发的一个开源的单点登录协议,它提供了一种安全、灵活的方式来实现跨域的身份验证。CAS协议基于HTTP和HTTPS,确保了通信过程的安全性。 CAS安全性主要体现在其...

    tomcat cas 单点登陆

    ### Tomcat与CAS单点登录实现详解 #### 一、背景介绍 在现代企业级应用环境中,多个系统之间往往需要进行集成,以便于提供统一的用户体验和服务。其中一个关键的需求是实现单点登录(SSO, Single Sign-On)功能,即...

    cas实现单点登录 功能

    CAS(Central Authentication Service)是 Yale 大学开源的一个基于 Java 的单点登录系统,它提供了一种安全、便捷的身份验证机制。本文档将深入探讨如何使用 CAS 实现 Java 应用中的单点登录功能。 一、CAS 概述 ...

    Yale CAS最佳实践.rar

    **Yale CAS(Central Authentication Service)是耶鲁大学开发的一款基于Web的身份验证系统,它允许用户通过单一登录(Single Sign-On, SSO)访问多个应用系统。本篇将详细探讨Yale CAS的最佳实践,包括环境准备、...

    CAS单点登录 for Tomcat

    《Tomcat中使用Yale+CAS实现单点登陆(SSO).doc》可能会讲解如何结合Yale大学提供的CAS实现SSO。《修改CAS客户端.pdf》可能是关于如何自定义和扩展CAS客户端的指导。最后,《构造CAS客户端的登录Servlet.pdf》则可能...

    CAS单点登录

    CAS(Central Authentication Service)是Yale大学发起的开源项目,自2004年12月成为JA-SIG项目,为Web应用提供了可靠的单点登录框架。CAS的特点包括: 1. 开源:它提供了一个免费且可定制的企业级单点登录解决方案...

Global site tag (gtag.js) - Google Analytics