sso介绍
sso是Single sign-on的缩写,翻译成中文是单点登录的意思,所谓的单点登录是指在有多个应用系统的情况下,成功登录任一应用系统后再登录其他的系统是不用再输入用户名密码登录而直接可以登录到系统。一般使用cookie技术实现。
使实现sso原理
条件
- 浏览器需要支持cookie
- 所有的应用系统在同一个顶级域内,比如:顶级域是www.ichaoying.com,那应用系统的域名是相同的:sso.ichaoying.com,cms.ichaoying.com,oa.ichaoying.com
实现原理
- 用户登录成功后,生成一个唯一的sso id,首先把sso id和对应用户信息写入session信息存储中,sso id作为主键,然后把sso id写入cookie,该cookie绑定的域是*.ichaoying.com,这样所有的子域系统也可以访问到这个cookie
- sso id的生成规则: md5(loginname + 姓名 + 时间戳 + salt),salt是我们配置的一个干扰字符串
- 请求任何应用系统时,自动把上面的cookie发送到应用系统,应用系统根据cookie的sso id去session信息存储查找用户信息,如果找到则继续提供服务,如果cookie没有sso id或者在session信息存储没有找到用户信息,则需要导向登录界面登录。
- 用户请求流程:
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'
)
- 当用户访问某一服务或者资源url时,系统判断是否存在名字为sso_id的cookie,如果有,则从数据库读取session信息,如果不能读的信息,则需要重新登录;如果读到,则比较last_access_time + 超时时间和当前时间,如果当前时间>last_access_time + 超时时间则表示超时,需要重新登录;如果last_access_time + 超时时间>当前时间表示验证成功,然后更新last_access_time时间为当前时间。
- last_access_time更新策略,数据库的update操作与select相比,性能消耗会大几个数量级,为了提高数据库性能,需要采用一些策略:不是每次成功验证session后都更新last_access_time字段,比如我们这是session超时间隔是8个小时,那么sesson超时误差是20分钟,那么用户是能容忍这种误差的,我们可以利用这种误差,如果last_access_time + 超时时间和当前时间的时间间隔大于20分钟,那么本次不更新last_access_time,如果小于20分钟,则更新last_access_time。
应用程序权限判断
- 采用filter,实现一个filter,在filter中根据url判断用户的请求是否需要登录验证,如果需要则验证
- spring mvc,实现一个拦截器,功能类似filter
设计类图
分享到:
相关推荐
基于WEB服务单点登录设计与实现,有兴趣可以学习下
此文档为本次公司开发一个简单单点登录系统时为其设计的开发文档
基于AD域实现单点登录设计文档.docx 在WinServer2016服务器中搭建AD域
单点登录系统设计说明书,主要是一些系统的设计说明书,有助于对单点登录系统的理解……
该设计可用于不清楚如何实现单点登录人员的设计参考。依据此设计,可以完成绝大多数的单点登录系统设计与实现。并能够很好地兼容不同系统之间的差异性。
CAS单点登录操作文档 CAS 是 Yale 大学发起的一个开源项目,旨在为 Web 应用系统提供一种可靠的单点登录方法,CAS 在 2004 年 12 月正式成为 JA-SIG 的一个项目。CAS 具有以下特点: • 开源的企业级单点登录解决...
搜狐单点登录。有具体实现源代码、原理图、开发设计文档。一个站点登陆,其它站点同时登陆,退出也一样。
单点登陆设计原理,介绍单点登陆(SSO)常见的方式,
本篇文章主要介绍了ASP.NET MVC SSO单点登录设计与实现,具有一定的参考价值,有兴趣的可以了解一下。
单点登录详细设计,为了单点登录系统(SSO系统)的可行性,完整性,并能按照预期的设想实现该系统,特编写需求说明书。
由于用户还没有在单点登录系统上登录过,所以跳转到单点登录系统用户登录页面http://localhost:7771/SSOSite/SignIn.aspx 2、输入正确的用户名和密码(51aspx/51aspx),跳转到企业门户系统首页面...
sso架构单点登录方案设计 登陆一个系统其它系统之家不用登陆的设计方案
单点登录系统设计与实现,数据库登录系统的设计与实现
权限管理WEB系统,单点登录,概要设计,Java,开发技术;权限管理WEB系统单点登陆概要设计0.1.doc
单点登录系统的设计与实现⽅案 单点登录系统的设计与实现⽅案 ⽬的: 对⽬前已有的 Web 应⽤系统,和将来待开发的 Web 应⽤系统进⾏集成,实现单点登录。 要求: 1. 对已有的 Web 应⽤系统不作⼤规模改造。 2. 不...
高可用单点登录系统设计图visio
本文除了从多个方面和角度给出了对单点登录(SSO)的全面分析,还并且讨论了如何将现有的应用和SSO服务结合起来,能够帮助应用架构师和系统分析人员从本质上认识单点登录,从而更好地设计出符合需要的安全架构。
单点登录系统(SSO)详细设计说明书
NC单点登录测试用例: 使用http GET或者POST方式,向NC servlet提交如下信息