`
greenmoon
  • 浏览: 48599 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

单点登录设计

 
阅读更多

 

sso介绍

sso是Single sign-on的缩写,翻译成中文是单点登录的意思,所谓的单点登录是指在有多个应用系统的情况下,成功登录任一应用系统后再登录其他的系统是不用再输入用户名密码登录而直接可以登录到系统。一般使用cookie技术实现。


使实现sso原理


条件

  1. 浏览器需要支持cookie
  2. 所有的应用系统在同一个顶级域内,比如:顶级域是www.ichaoying.com,那应用系统的域名是相同的:sso.ichaoying.com,cms.ichaoying.com,oa.ichaoying.com


实现原理

  1. 用户登录成功后,生成一个唯一的sso id,首先把sso id和对应用户信息写入session信息存储中,sso id作为主键,然后把sso id写入cookie,该cookie绑定的域是*.ichaoying.com,这样所有的子域系统也可以访问到这个cookie
  2. sso id的生成规则: md5(loginname + 姓名 + 时间戳 + salt),salt是我们配置的一个干扰字符串
  3. 请求任何应用系统时,自动把上面的cookie发送到应用系统,应用系统根据cookie的sso id去session信息存储查找用户信息,如果找到则继续提供服务,如果cookie没有sso id或者在session信息存储没有找到用户信息,则需要导向登录界面登录。
  4. 用户请求流程:

Sso design.png


session存储

  • 目前系统使用数据库存储,数据库表结构:
 create table session_info(
     sso_id varchar(64) not null comment 'sso id, md5(loginname+username+timestamp+salt)' primary key,
     create_time datetime not null comment '第一次登录的时间', 
     last_access_time datetime not null comment'最后一次访问的时间',
     user_info varchar(512) not null comment 'user info,json'
    )
  • 以后可以更新为nosql数据库

[编辑]验证

  1. 当用户访问某一服务或者资源url时,系统判断是否存在名字为sso_id的cookie,如果有,则从数据库读取session信息,如果不能读的信息,则需要重新登录;如果读到,则比较last_access_time + 超时时间和当前时间,如果当前时间>last_access_time + 超时时间则表示超时,需要重新登录;如果last_access_time + 超时时间>当前时间表示验证成功,然后更新last_access_time时间为当前时间。
  2. last_access_time更新策略,数据库的update操作与select相比,性能消耗会大几个数量级,为了提高数据库性能,需要采用一些策略:不是每次成功验证session后都更新last_access_time字段,比如我们这是session超时间隔是8个小时,那么sesson超时误差是20分钟,那么用户是能容忍这种误差的,我们可以利用这种误差,如果last_access_time + 超时时间和当前时间的时间间隔大于20分钟,那么本次不更新last_access_time,如果小于20分钟,则更新last_access_time。


应用程序权限判断

  1. 采用filter,实现一个filter,在filter中根据url判断用户的请求是否需要登录验证,如果需要则验证
  2. spring mvc,实现一个拦截器,功能类似filter


设计类图

Sso类图120605.png

 

分享到:
评论

相关推荐

    基于WEB服务单点登录设计与实现

    "基于WEB服务单点登录设计与实现" 本文对单点登录(SSO)技术进行了详细的讨论,从理论到实践,介绍了SSO的概念、分类、优点和实现方法,并结合Web Service提供了一个简单的单点登录技术的实现。 单点登录(SSO)...

    单点登录设计方案研究

    ### 单点登录设计方案研究 #### 一、编写目的 随着企业规模的不断扩大和技术的快速发展,各类业务系统逐渐增多,员工需要频繁地在不同的系统之间切换。传统的登录方式要求用户在每个系统中单独进行身份验证,这...

    基于AD域实现单点登录设计文档.docx

    总结,基于AD域的单点登录设计和实现,涉及到服务器的配置、AD域服务的安装、林和域功能级别的选择,以及用户和资源的管理。通过精心规划和实施,可以构建起一个高效、安全的网络环境,为企业的日常运营提供强有力的...

    单点登录设计图,懒加载模式

    总之,单点登录设计图提供了一个高效且兼容性强的解决方案,通过统一的登录入口和后台处理机制,实现了跨系统的用户认证。在实施过程中,需要注意不同系统的兼容性和安全性,同时对可能出现的问题进行预见和规划,以...

    搜狐单点登录设计原理+设计文档+实现源代码

    标题中的"搜狐单点登录设计原理"涉及到的是SSO的核心概念和技术,通常包括以下方面: 1. **认证中心(Identity Provider,IDP)**:SSO系统的核心部分,负责验证用户的凭证,如用户名和密码。一旦用户通过IDP认证,...

    单点登录设计说明书

    单点登录(Single Sign-On,简称SSO)是一种网络认证...综上,单点登录系统设计是一个复杂的过程,需要综合考虑用户体验、安全性和系统集成等多个方面。通过深入理解和实践,我们可以构建出高效且安全的SSO解决方案。

    单点登陆设计原理

    总的来说,单点登录设计原理涉及用户认证、授权、会话管理等多个层面,其目标是提供一个统一、安全且便捷的访问体验。随着云计算和移动设备的普及,SSO的重要性日益凸显,成为了现代企业信息化建设中不可或缺的一...

    CAS单点登录操作文档

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

    ASP.NET MVC SSO单点登录设计与实现代码

    ASP.NET MVC SSO单点登录设计与实现是网络应用程序中常用的一种身份验证机制,它允许用户在一个应用系统中登录后,无需再次输入凭证就能访问其他关联的应用系统。本篇文章主要探讨了如何在ASP.NET MVC环境下构建这样...

    用友U8开发单点登录方案

    本文主要介绍了用友U8开发单点登录方案的设计背景、应用场景、实现方式和技术细节。单点登录方案的设计目标是实现非U8系统与U8系统的集成,共享用户名和密码,实现单点登录。 设计背景 随着企业IT系统的发展,系统...

    单点登录系统设计与实现源码

    由于用户还没有在单点登录系统上登录过,所以跳转到单点登录系统用户登录页面http://localhost:7771/SSOSite/SignIn.aspx 2、输入正确的用户名和密码(51aspx/51aspx),跳转到企业门户系统首页面...

    单点登录详细设计

    【单点登录详细设计】 单点登录(Single Sign-On,简称SSO)是一种网络认证机制,允许用户在一次登录后,就能访问多个相互关联的应用系统,而无需为每个系统分别进行登录。SSO的主要目标是简化用户的登录流程,提高...

    单点登录方案设计

    sso架构单点登录方案设计 登陆一个系统其它系统之家不用登陆的设计方案

    单点登录概要设计

    权限管理WEB系统,单点登录,概要设计,Java,开发技术;权限管理WEB系统单点登陆概要设计0.1.doc

    JEECG 单点登录说明文档

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

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

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

    漂亮的单点登录网页模版

    "漂亮的单点登录网页模版"可能是指一个设计美观且功能完善的SSO登录界面,用于提升企业品牌形象或提高用户登录体验。这样的模版通常包括以下关键元素: 1. **用户界面设计**:模版应具备吸引人的视觉设计,符合现代...

Global site tag (gtag.js) - Google Analytics