`
ginge
  • 浏览: 211895 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

基于Cookie单点登录策略的缺陷和相对理想的设计

阅读更多

缺陷

1)客户端不得不启用Cookie

Servlet规范规定一个用户只有一个Session,要求Web容器用一个唯一的键值来对该Session作对应,然而HTTP 请求却是没有状态的。客户端如何保持这个键值呢,一种方法是用Cookie来保存,要是Cookie在客户端被Disabled了,那就只能URL重写

 

2)必须得解决Cookie跨域的问题

  这就要求各个服务器统一域名方式

 

3)必须在客户端或者在某个DNS服务器上配置域名映射

   直接用IP访问是不行的,要是在客户端配置域名映射那将会非常麻烦

 

4)要是不用SSL传输等来加强安全,用户名和密码等存在Cookie中的信息将有可能给截取

 

相对理想的另一设计

1)  用户登录通过认证后生成一个在所有应用都是唯一的ticket,这个ticket只能生效一次且有过期时间,有效时间与对应的Http Seesion的有效时间一样。同时生成一个SSOSeesion,这个用之前生成的唯一ticket对应。

2)  这个SSOSession用来保存相关的用户信息

3)  当用户首次成功登录后,所有应用都能获悉该ticketSSOSession

4)  当用户从当前应用访问其他应用时传输的是ticket而不是用户名和密码之类,更好点应该用Http Post方式提交请求

5)  当用户以SSO方式登录成功后,ticket应该被更新,旧ticket应该被立即失效,所有服务器上的旧ticket对应的SSOSession也应失效

6)  用户当前HTTP Sessioninvalidated时,所有服务器上同一SSOSession也应该同时被Invalidated;同样,登出时也一样

7)  为了更好的安全性,在认证阶段也需要HTTP SSL Transport

 

 

接口

  • SSOSession                                 单点登录会话
  • SSOSessionContext                   单点登录会话上下文
  • ClusterContext                            集群上下文
  • ClusterEventSource                   集群消息源
  • ClusterNotification                   集群消息


SSOSessionContext需要跟踪所有会话。它继承ClusterContext,ClusterEventSource,这样它就有了集群的能力。


让我们考虑一下应用的场景:
存在应用A和B,用户X先是成功登录A,之后从A转跳到B。B发现自己没有A的登录会话,
于是发出一个集群消息请求会话支援。A收到消息后回应B。最后X成功登录B。


当然,这样的设计存在很多的难点,例如如何进行集群消息回应,更新SSOSession。怎样确定Peer也没有所请求的SSOSession等。
这些都是一些集群需要考虑的问题。


幸运的是,我们可以选择一些开源的集群实现JBoss Cache就是其中之一。要是有了这样的集群实现上面的三个Cluster开头的接口就可以省略了。

 

 

1
0
分享到:
评论

相关推荐

    基于cookie的单点登录代码示例

    在"基于cookie的单点登录示例代码"中,可能包含以下关键部分: 1. **Cookie管理**:代码会包含创建、读取和删除Cookie的函数。这些函数确保安全地存储和检索用户认证信息。 2. **CAS通信**:与CAS服务器的交互逻辑...

    单点登录的demo(使用cookie+filter实现)

    在这个“单点登录的demo(使用cookie+filter实现)”中,我们将深入探讨如何利用Cookie和Filter技术来实现一个简单的SSO系统。 **一、Cookie基础** Cookie是Web服务器存储在用户浏览器上的一小段数据,用于在用户与...

    单点登录&单点登出(Cookie+ticket)

    在本项目中,"单点登录&单点登出(Cookie+ticket)"是通过Servlet技术实现的,利用Cookie和Ticket这两种机制来处理SSO的过程。 Cookie是Web应用中用于跟踪用户状态的一种常见方法。在SSO场景下,当用户首次登录SSO...

    Iframe+Cookie实现简单的单点登录

    【标题】:“Iframe+Cookie实现简单的单点登录” 单点登录(Single Sign-On,SSO)是一种身份验证机制,允许用户在多个相互关联的应用系统中登录一次,然后在整个会话期间无需再次输入凭证即可访问这些系统。在本文...

    基于LDAP协议的单点登录系统的研究与设计

    LDAP协议,全称Lightweight Directory Access Protocol,即轻量目录访问协议,是一种用于访问和维护...随着技术的不断进步和安全要求的提高,基于LDAP的单点登录系统需要不断更新和完善其设计,以适应新的挑战和需求。

    基于可变Cookie的跨域单点登录

    本文介绍了一种基于可变Cookie的跨域单点登录方案,该方案通过引入随机生成的票据和现代加密技术,有效地解决了跨域认证问题,并确保了用户身份验证的安全性和可信度。 #### 基本原理 传统的单点登录解决方案大多...

    sso-use-cookie单点登录

    总结,"sso-use-cookie"项目通过SpringBoot和Cookie实现了单点登录功能,适合有一定Spring基础的学习者了解SSO的基本原理和实践。通过深入学习和理解这个项目,开发者能够掌握如何在实际项目中应用SSO,提升系统的...

    基于Java EE的单点登录技术研究与实现.pdf

    本文着重介绍了两种实现方式:基于Cookie机制的单点登录和基于安全断言标记语言(Security Assertion Markup Language,简称SAML)的单点登录。 基于Cookie的单点登录技术是一种基于HTTP重定向和票据的集中式认证...

    JEECG 单点登录说明文档

    Kisso的这种设计使得分布式服务部署、单点登录跨域访问等问题变得简单,而使用session则需要复杂的session复制机制和其他解决方案,实现起来更加困难。 JEECG智能开发平台v3的开发指南详细说明了如何集成Kisso实现...

    java 基于 Cookie 的 SSO 中间件 kisso 低代码

    SSO(Single Sign-On)单点登录是一种身份验证机制,允许用户在一次登录后访问多个相互关联的应用系统,而无需再次进行身份验证。在Java环境中,实现SSO的一个常见方式是通过Cookie。Kisso是一个基于Cookie的轻量级...

    基于SpringBoot实现单点登录的两种方式

    基于SpringBoot实现单点登录的两种方式,第一种(Session):SpringBoot+SpringSession+Redis;第二种基于(Session+Cookie):SpringBoot+Redis(redis集群+池化:一致性Hash分片算法) 实现单点登陆

    SSO单点登陆实现 cookie + jsonP 实现夸域单点登陆

    SSO(Single Sign-On)单点登录是一种...总结,通过cookie和JSONP的结合,我们可以构建一个基本的SSO系统,实现跨域的单点登录功能。然而,实际应用中还需考虑更多的安全措施和扩展性需求,以适应不断变化的网络环境。

    SSO单点登录【基于cookie二级域名下跨域共享】

    SSO(Single Sign-On)单点登录是一种身份验证机制,允许用户在一次登录后访问多个相互关联的应用系统,而无需再次进行身份验证。在基于Cookie的二级域名下跨域共享SSO实现中,核心概念是利用Cookie的特性来实现用户...

    sso_bbs(v2)(使用cookie+filter实现单点登录的第二个版本)

    综上所述,sso_bbs(v2)项目是通过Cookie和Filter技术实现单点登录的一个实例,它涉及到用户认证、请求过滤、安全策略等多个方面,是理解SSO机制和Web应用程序安全设计的重要案例。通过分析和实践这个项目,开发者...

    基于cas单点登录的实现pdf

    ### 基于CAS单点登录的实现:深入解析与实践 #### 一、引言:CAS单点登录概述 单点登录(SSO,Single Sign-On)是一种身份验证机制,允许用户一次登录后,无需再次输入凭证即可访问多个应用程序和服务。在教育机构...

    单点登录系统的设计与实现

    ### 单点登录系统的设计与实现 #### 一、引言 随着信息技术的发展,用户在不同的应用系统之间频繁切换已成为常态。为了提升用户体验并确保数据安全,单点登录(Single Sign-On, SSO)系统逐渐成为众多企业的首选...

Global site tag (gtag.js) - Google Analytics