跨war包session同步解决方案
【功能点】
不同war包间session共享
【关键需求理解】
多系统间实现统一登陆(单点登陆),对用户屏蔽多个独立系统的存在,给用户提供一个整体统一的系统。
【实现逻辑描述】
用一个类的静态hashmap域来存放公共session信息,我们可以称之为session容器,其中key为sessionID,value为一个简单SessionUser对象。
对各个系统的访问都通过filter过滤,在filter中根据当前的sessionID判断容器是否存在该sessionID,如果不存在,则重定向到统一登陆页面,如果存在,而且当前session中不存在登陆信息,则在SessionManager中增加有效session个数,并在当前session中添加登陆信息。
当用户在一个系统中退出时,在SessionManager中删除该session信息。
当系统1超时时(通过EBossUserSessionListener监听session是否超时),在SessionManager中减少该sessionID对应的session的有效个数,当有效个数<1时,在容器中删除.
各个war的web.xml中添加如下节点:
<filter>
<filter-name>EBossUserFilter</filter-name>
<filter-class>com.sitechasia.sessionResearch.ebossUser.EBossUserFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>EBossUserFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<listener> <listener-class>com.sitechasia.sessionResearch.ebossUser.EBossUserSessionListener</listener-class>
</listener>
在war上级的lib中添加ssosession.jar。
【代码实现的优点】
通过一个hashMap实现session的统一管理,通过sessionUser中的有效session数来记录当前用户已经登陆的系统个数,当某个系统的session失效时,不影响整个系统的访问(只要有一个系统的session没有失效就可以访问全部系统),当所有系统的session都失效时,则不能访问任何一个系统。
通过EBossUserSessionListener实现session会话的监听。
【代码实现中的一些缺点】
此实现只能针对在同一个应用服务器下发布的各个系统,要求各个系统的域名相同,系统使用java语言。各个系统是通过页面的链接实现统一访问的。
需要基于以下条件:在一个浏览器窗口中访问相同域名内的各个系统时,生成的sessionID是相同的,在这个窗口中通过点链接打开的新窗口访问相同域名内的各个系统时,生成的sessionID也是相同的。
【如何改进】
为克服以上缺点,可以考虑通过程序控制sessionID的生成,编写一个sessionID生成算法;
将静态类容器的实现扩展为数据库方案的实现,这样可以脱离具体语言的限制,但使
用数据库方案时,因为访问任何一个页面都需要得到用户的登陆信息,势必会引发性能问题,应该针对可能引起的性能问题寻找一个适当的解决方案。
分享到:
相关推荐
1. 开源的、多协议的SSO解决方案,支持Custom Protocol、CAS、OAuth、OpenID、RESTful API、SAML1.1、SAML2.0等协议。 2. 支持多种认证机制:Active Directory、JAAS、JDBC、LDAP、X.509Certificates等。 3. 安全...
单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。 较大的企业内部,一般都有很多的...
它提供了一个可靠、可扩展和可部署的单点登录解决方案。CAS主要支持Web SSO,但也包括命令行和桌面客户端的认证。 ### CAS的工作原理 1. 用户尝试访问受保护的资源。 2. 资源服务器识别到用户未通过认证,并重定向...
单点登录(Single Sign-On, SSO)是一种网络身份验证技术,允许用户通过一次登录就能访问多个相互关联的应用系统,而无需多次输入凭证。本文主要分析两种常见的SSO实现框架——JOSSO(Java Open Single Sign-On)和...
- **单点登录(SSO)支持:** 如果系统启用了SSO功能,则会通过特定的方式进行登录处理。 #### 七、登录页面处理逻辑 - **JavaScript脚本:** 当用户点击登录链接时,可能会弹出模态框(modal),或者直接跳转到...
Teamcenter的单点登录(Single Sign-On, SSO)架构基于LDAP(轻量级目录访问协议)和可能的其他目录服务,如Active Directory或Novell。这种架构的核心是Teamcenter安全代理,它与安全服务进行通信,确保用户身份的...
**CAS SSO(Central Authentication Service 单点登录)** CAS 是一个开源的身份验证框架,它提供了基于 Web 的单点登录(Single Sign-On, SSO)功能。SSO 允许用户在一次登录后访问多个相互信任的应用系统,而无需...
通过以上介绍可以看出,Liferay 6.1 和 CAS 的结合可以为企业级应用提供一个强大且灵活的单点登录解决方案。不仅能够提高用户体验,还能极大地提升系统的安全性和可维护性。无论是Liferay本身的特性还是与CAS的集成...
在本文中,我们将深入探讨Keycloak的功能、如何使用它支持单点登录(SSO)以及它在IT环境中的重要性。 Keycloak的核心功能包括: 1. **身份验证**:Keycloak允许用户通过用户名和密码、社交账户或其他认证方式(如...
3. 身份管理与OpenID:Seam Security还提供身份管理支持,包括对OpenID的支持,这是一种流行的单点登录(SSO)解决方案。 4. 授权与权限管理:授权是确定谁可以访问特定资源的过程。Seam Security提供了一套权限...
当应用服务器集群化时,可以使用SSO(Single Sign-On)单点登录,通过加密cookie实现用户身份的跨服务器验证。此外,Tomcat和JBoss提供了session复制功能,但会导致性能下降和广播风暴。为避免这些问题,可以使用...
SAML v2版本提供了更强大的功能和改进的安全性,允许服务提供者和服务消费者之间的信任关系建立,从而实现单点登录(Single Sign-On, SSO)和其他高级安全特性。在JBoss平台上,SAML v2被广泛应用于身份管理解决方案...
6. **使用单点登录(SSO)**:对于大型企业级应用,可以采用单点登录系统,用户只需要登录一次,即可在多个子系统间自由切换,减少Session丢失的问题。 7. **考虑无状态设计**:在微服务架构中,推动服务无状态化,...
通过此组件,Acegi Security可以与CAS服务器交互,支持单点登录(Single Sign-On, SSO)功能,使得用户只需一次登录就能访问多个应用系统。 3. acegi-security-jboss-1.0.5.jar:这是针对JBoss应用服务器的适配器,...
- 用户统一认证:通过单点登录(SSO)实现用户身份验证的统一管理。 2.4 基于应用支撑平台的集成架构 - 应用服务器:如Tomcat、JBoss等,作为应用部署的基础,提供集成环境。 - 消息队列:如RabbitMQ、Kafka,用于...
CAS(Central Authentication Service)是耶鲁大学开发的一个开放源代码单点登录(SSO)系统,它允许用户通过一次登录就能访问多个应用系统。在项目中,CAS可以提高用户体验,减少用户记住多个账户和密码的负担,...
在IT行业中,OpenDJ被广泛用于身份验证、授权、单点登录(SSO)和数据存储。 **1. OpenDJ的核心功能** OpenDJ作为一个强大的LDAP服务器,其核心功能包括: - **身份存储**:存储用户的用户名、密码、属性信息等。 -...
安全性是Jaspersoft系统的核心组件,它内置了基于Spring Acegi的认证和授权体系,支持与外部安全系统如LDAP、AD等集成的单点登录(SSO)。同时,系统提供了细粒度的访问控制,对数据访问进行严格限制。 Jaspersoft...
雅典娜多莉Athena-Dolly是一个独立于... 由于它支持纯服务器端SSO(单点登录)功能,因此无需安装代理即可维护多个域之间的登录状态。 它提供了一个Web应用程序,可以监视缓存服务器的CPU和内存,查询会话数据以及检查
它提供了一系列功能,包括认证、授权、单点登录(Single Sign-On, SSO)以及OpenID Connect、OAuth 2.0等协议的支持。Keycloak可以轻松集成到各种应用程序和服务中,无论是传统的Java应用程序还是基于微服务架构的...