`

一个帐号,同时多处登陆的问题(apache security)

阅读更多
找到的相关资料


急答:一个帐号,同时多处登陆的问题(apache security)

http://www.blogjava.net/beyondwcm/archive/2009/05/08/269545.html

定制的Spring Security(Acegi)的并发会话过滤器(ConcurrentSessionFilter)的编码过程


springsecurity扩展自定义会话管理(一)控制用户重复登陆

springsecurity有控制单账号只能在一个地方登陆的功能,后登陆用户将踢掉前登陆用户;或者限制账号重复登陆,一个账号没有退出,另外一个人想用这个账号就登陆不上

主要涉及的类如下(我自己的山寨理解):
HttpSessionEventPublisher             监听session创建和销毁
ConcurrentSessionFilter                  每次有http请求时校验,看你当前的session是否是过期的
SessionRegistryImpl                       存放session中的信息,并做处理
ConcurrentSessionControllerImpl     用户登入登出的控制
SessionInformation       存储session中信息的model

先实现springsecurity文档上的,限制用户重复登陆,后登陆用户将前登陆用户冲掉 ,只需要在xml中配置如下:
<authentication-manager alias="authenticationManager"
session-controller-ref="currentController" />
<beans:bean id="concurrentSessionFilter"   class="org.springframework.security.concurrent.ConcurrentSessionFilter">
<custom-filter position="CONCURRENT_SESSION_FILTER" />
<beans:property name="sessionRegistry" ref="sessionRegistry" />
<!-- 踢出的用户转向的页面-->
<beans:property name="expiredUrl" value="/user/user.action" />
<beans:property name="logoutHandlers">
   <beans:list>
    <beans:bean class="org.springframework.security.ui.logout.SecurityContextLogoutHandler" />
    <beans:bean
     class="org.springframework.security.ui.rememberme.TokenBasedRememberMeServices">
     <beans:property name="key" value="e37f4b31-0c45-11dd-bd0b-0800200c9a66"/>
     <beans:property name="userDetailsService" ref="userDetailsService"/>
    </beans:bean>
   </beans:list>
</beans:property>
</beans:bean>
<beans:bean id="sessionRegistry"   class="org.springframework.security.concurrent.SessionRegistryImpl" />
<beans:bean id="currentController"
class="org.springframework.security.concurrent.ConcurrentSessionControllerImpl">
<beans:property name="sessionRegistry" ref="sessionRegistry" />
<!-- true限制不允许第二个用户登录,false第二个登陆用户踢掉前一个登陆用户 -->
<beans:property name="exceptionIfMaximumExceeded" value="false" />
<!-- 等第二种情况是,允许同时多少个用户同时登陆 -->
<beans:property name="maximumSessions" value="2"/>
</beans:bean>

其中web.xml还需要添加:
<!-- 登入和登出时对SessionRegistryImpl进行处理 -->
<listener>
<listener-class>org.springframework.security.ui.session.HttpSessionEventPublisher</listener-class>
</listener>



随着业务的发展,公司部署的网站越来越多,有必要整合多个网站,采用统一的用户验证。目前想到的解决方案,主要有以下几种.
1.sso解决方案,部署独立的用户验证系统,利用cookie的保存登录ticket的基本思路,网上有很多种解决方案,有的过于复杂,需要配置很多东西,有的过于局限,只支持单一的语言。不知道各位有哪些比较好的解决方案,适合项目不是太多,配置不是太烦,支持多中语言,例如java和php等。
2.开放api,oauth验证方式,不仅适合对内项目,而且可以对外验证。感觉好像很好的,而且我们iteye论坛也有ROP等实现方式,自我感觉这种方式比较很不错.
3.统一的验证窗口,所有的登录都提交到统一的登录窗口,由其负责处理。实现最简单,不过,需要同一级域名。
不知,各位大牛们有什么比较好的意见?

个人感觉第一种比较不错,你可以采用单点登录在做到这点,一台服务器只作为验证服务器,随着项目的增多,每个项目的验证都可以使用这台验证服务器做单点登录,这也需要一个相同的登录界面,和第三种方案比较类似,不过需要注意的是,单点登录是可以跨域的(跨根域)
  对于你的第三种方案,只要js比较牛的话,应该也是可以的,淘宝的不就是这样做的吗 ?


sso一般有两种实现,基于agent和proxy。

CAS是基于agent的


XMPP 简单研究

分享到:
评论

相关推荐

    SSO单点登录Spring-Security & CAS

    通过以上步骤,您可以搭建一个可靠且高效的单点登录系统,为用户提供无缝的多应用访问体验。此外,本文还提供了关于CAS原理和协议的深入解析,帮助读者更好地理解SSO的工作机制。希望本文能对您理解和实施SSO有所...

    Apache Shiro中文开发文档.pdf

    - **入门指南**:本教程将引导你创建一个简单的由Apache Shiro保护的应用程序,通过实际操作加深对Shiro的理解。 - **环境准备**:需要Java 1.5及以上版本,推荐使用Apache Maven作为构建工具,但也可以手动集成...

    Apache shiro权限控制基础配置代码

    Apache Shiro是一款强大的Java...总结,Apache Shiro是一个强大且易用的安全框架,通过基础配置和代码实现,我们可以轻松地实现权限控制,确保应用的安全性。在使用过程中,理解其核心组件、配置和工作流程至关重要。

    nifi配置超级用户_nifi_nifi配置超级用户_

    - `nifi.security.user.login.identity.provider`: 这里指定身份验证提供者,通常是一个定义了用户和角色的JSON文件。 - `nifi.security.user.authority.provider`: 指定授权提供者,用于决定用户的角色和权限。 ...

    filter过滤器实现权限访问控制以及同一账号只能登录一台设备

    3. **Filter链**:多个`Filter`可以串联形成一个`Filter Chain`,按照配置顺序逐个执行。 **二、权限访问控制** 1. **认证与授权**:首先,我们需要一个登录页面让用户输入凭证(如用户名和密码)。认证成功后,...

    java web 实现QQ第三方登录Demo

    这个"java web 实现QQ第三方登录Demo"是一个示例项目,帮助开发者理解并实践如何集成QQ登录接口到自己的Web应用中。下面我们将详细探讨相关的知识点。 1. **OAuth2.0授权协议**: QQ第三方登录基于OAuth2.0协议,...

    跨平台的单点登录功能

    这个概念极大地提高了用户体验,减少了登录过程中的繁琐步骤,同时也提升了安全性,因为用户只需管理一个主账号的凭证。在现代互联网环境中,随着各种应用程序和服务的增多,SSO变得越来越重要。 SSO的工作原理基于...

    单点登陆(SSO)案例(三)

    单点登录(Single Sign-On,简称SSO)是一种网络身份验证机制,允许用户在一个系统上登录后,无需再次输入凭证即可访问多个相互关联的应用系统。SSO的主要目标是提高用户体验,减少用户记忆多个账号和密码的压力,...

    Hiveserver2 Beeline连接设置用户名和密码.docx

    在大数据处理领域,Hive 是一个非常重要的组件,它提供了基于 Hadoop 的数据仓库功能,使得用户可以通过 SQL 类似的查询语言来操作分布式存储的数据。Beeline 是 Hive 提供的一个命令行工具,用于与 HiveServer2 ...

    跨服务器登录验证(单点登录SSO)过程和Java实现

    单点登录(Single Sign-On,简称SSO)是一种网络用户身份验证机制,允许用户在一次登录后访问多个相互关联的应用系统,而无需再次输入认证信息。这种机制极大地提高了用户体验,减少了用户记忆多套账号密码的困扰,...

    CAS实现sso单点登录原理

    2. Broker-based(基于经纪人)这种技术的特点就是,有一个集中的认证和用户帐号管理的服务器。 3. Agent-based(基于代理人)在这种解决方案中,有一个自动地为不同的应用程序认证用户身份的代理程序。 4. Token-...

    oauth认证中心.doc

    其中,CAS(Central Authentication Service)是一个开源的单点登录系统,Spring Security 则提供了更全面的安全管理框架,包括支持 OAuth2 认证。 **OAuth2 认证流程**: OAuth2 认证流程涉及四个主要角色:资源...

    用springboot+shiro+jwt写的简单的登录模块

    Apache Shiro是一个强大的Java安全框架,用于处理认证(验证用户身份)、授权(确定用户权限)、会话管理和加密等任务。在Spring Boot项目中,Shiro可以作为一个轻量级的安全层,与Spring Security一起使用或独立...

    JavaEE实现登录功能的几种框架组合方式

    对于登录,可以创建一个Action来处理登录请求,并利用Struts 2的拦截器实现会话管理和权限控制。 4. **JSF (JavaServer Faces)** JSF是一种组件化的Web开发框架,通过UI组件处理用户交互。配合Facelets视图技术,...

    基于PHP+MySQL实现用户注册登录功能1

    - 接着,创建一个数据表“002”。表的结构至关重要,它应该至少包含用户ID(主键)、用户名、密码(通常加密存储)和其他必要信息,如邮箱、注册日期等。例如: ```sql CREATE TABLE `002` ( `id` INT(11) NOT ...

    web项目的一个论坛

    【描述】:“一个论坛,基于Java技术,属于Web应用,管理员登录后可全面操作,具备在线交流功能。” 【详细知识点】: 1. **Web项目**:这是一个基于Web的软件应用程序,用户通过浏览器进行访问和交互。Web项目...

    SpringBoot544音乐翻唱与分享平台.zip

    同时,考虑到用户注册和登录的需求,项目很可能还使用了Spring Social,这是一个用于社交网络集成的库,允许用户通过第三方账号(如Google、Facebook)进行快速登录。 在前端界面设计上,该项目可能利用了Thymeleaf...

    开放平台公共帐号授权

    在Java开发中,我们可以使用Spring Security OAuth2或Apache Oltu等库来实现开放平台公共帐号授权。这些库提供了完整的OAuth2.0支持,包括客户端和服务端的实现。 - **.classpath和.project**: 这两个文件是Eclipse...

    ssm登录注册发送邮件

    首先,`apache-tomcat-8.0.51`是Apache Tomcat服务器的版本,它是一个开源的Servlet容器,用于运行Java Servlet和JavaServer Pages (JSP)。在SSM项目中,Tomcat作为web服务器,负责接收HTTP请求,调用应用程序并返回...

    JAVAWEB在线聊天系统(基于MVC)_rezip1.zip

    【标题】"JAVAWEB在线聊天系统(基于MVC)"是一个综合性的Web应用程序,旨在提供一个实时的在线交流平台。它利用了MVC(Model-View-Controller)架构模式,这是一种常见的软件设计模式,用于组织Web应用程序的代码...

Global site tag (gtag.js) - Google Analytics