单点登录系统SSO实现
前些天被问到单点登录了,而据我当时做的这个模块两年了,现在重新温习并记录下,方便以后快速回忆起来
一、什么是单点登录系统
SSO全称Single Sign On。SSO是用户只需要登录一次就可以访问所有相互信任的应用系统
二、为什么需要单点登录系统
分布式集群的项目因为每个模块都部署在不同的机器。如果第一次在A系统登录,第二次访问B系统,这个时候B系统并没有保存用户状态,或者第一次nginx转发到A系统的机器1,在机器1登录,第二次访问A系统,nginx转发到了机器2,这些情况下都是需要重新登录。
为了解决这种情况,可以有两种机制:单点登录、tomcat配置session复制
session复制在集群下,代价过高,可能导致系统资源消耗过多。
所以构建一个单点登录系统,提供一个接口,供其他模块调用,来检测用户登录状态。实现就是使用redsi来模拟session,对session统一管理
三、怎么实现
1、首先sso系统提供登录,校验用户,登出等基本用户操作
2、登录的时候将用户信息保存到redis中,并设置过期时间,(key可以含有token,value为用户信息),请将用户的token响应给浏览器cookie,并设置cookie的domain(domain用来设置域,方便子域名系统能把cookie携带过来)
3、登录校验:最好写成一个过滤器,用户每次请求当前domain设置的域名及其子域名的时候,会携带用户cookie,过滤器从cookie里取token,去redis里查询用户信息,查到就放行,未查到就跳转到登录页面
4、登出:用户发起登出请求,登出接口获取到cookie中的用户的token,然后进行缓存请求,并清空cookie
参考链接:https://www.jianshu.com/p/cf41a10da952
单点登录系统SSO实现的更多相关文章
- 单点登录系统(SSO)之CAS(中央认证服务)
SSO(Single Sign On)单点登录系统,是在多个系统中值要求只要登录一次,就可以用已登录的身份访问多个系统,去掉了每次访问不同的系统都要重新登录的弊端. CAS(中央/集中认证服务):Th ...
- 单点登录系统(SSO)的开发思路
单点登录并不是一个新鲜的玩意儿,比较官方的解释是企业业务整合的解决方案之一,通俗来讲SSO就是一个通用的用户中心,国内比较流行的UCenter就是一套单点登录解决方案.而近期以CSDN明文存储用户密码 ...
- 单点登录系统---SSO
1.------------------SSO介绍--------------------------------- 有什么卵用?搞什么飞机的? 大家看看这个图,一个系统是没有问题.如果是分布式的系统 ...
- 多平台的网站实现单点登录系统(SSO)的开发思路 让你的会员中心更加统一(参考资料)
单点登录并不是一个新鲜的玩意儿,比较官方的解释是企业业务整合的解决方案之一,通俗来讲SSO就是一个通用的用户中心,国内比较流行的UCenter就是一套单点登录解决方案.而近期以CSDN明文存储用户密码 ...
- 单点登录系统(SSO)详细设计说明书(上篇)
1.引言 1.1编写目的 为了单点登录系统(SSO系统)的可行性,完整性,并能按照预期的设想实现该系统,特编写需求说明书. 同时,说明书也发挥与策划和设计人员更好地沟通的作用. 1.2 ...
- 第04项目:淘淘商城(SpringMVC+Spring+Mybatis)【第十天】(单点登录系统实现)
https://pan.baidu.com/s/1bptYGAb#list/path=%2F&parentPath=%2Fsharelink389619878-229862621083040 ...
- SSO - 我们为何需要单点登录系统
SSO,Single Sign On,也就是单点登录,保证一个账户在多个系统上实现单一用户的登录 现在随着网站的壮大,很多服务会进行拆分,会做SOA服务,会使用dubbo做微服务,或者简单的小型分布式 ...
- sso单点登录系统(解决session共享)
场景:假设一个用户将自己的登录信息提交到后台,如果session保存的信息分布在多台机器上,并且不共享,那么可能导致用户的登录信息出现短暂的丢失,为什么这样讲,因为用户访问服务器中间还要经过负载均衡服 ...
- 【SSO】单点登录系统
一.单点登录系统介绍 对于一个开发项目来说,每个项目都必不可少要有登录的这个功能.但是随着项目的变大,变大,再变大.系统可能会被拆分成多个小系统,咱们就拿支付宝和淘宝来说,咱们在淘宝上购物,然后就可以 ...
随机推荐
- 阿里云轻应用服务器配置Ubuntu的JDK、Tmocat、Mysql和Redis
1.与服务器建立连接(达到效果:XShell和Xftp均可连接到服务器) 阿里云管理控制台提供的三种建立服务器连接方式: 使用浏览器发起安全连接(推荐) 客户端使用密钥进行连接 客户端使用账号密码 ...
- BUGKU (Mountain climbing)
UPX壳,手脱后打不开,可能是在windows10脱壳的缘故吧.放在XP虚拟机上手脱可能会好,但是提示缺少dll.无奈,智能用工具了. 用的这个,感觉蛮好用的. 先打开程序.随便输入一个数,提示err ...
- 安装tacker
安全服务链编排系统安装部署文档 本系统基于OpenStack Pike版本安装,在安装tacker之前,请确保以下模块都已正确安装部署:keystone,mistral,barbican,horizo ...
- VS2019 安装并破解 DevExpress 19.2 插件
0.写在最前 本人vs版本为: 1.下载DevExpress 最新版本插件程序 官网下载试用30天地址: https://www.devexpress.com/products/net/con ...
- python 之魔法方法
描述符就是将某种特殊类型的类的实例指派给另一个类的属性 例如下面的示例 class MyDecriptor(): def get(self,instance,owner): print("g ...
- c++面向对象程序设计第四章课后习题
这是书上的习题,我使用的是VS2010运行编译的 原习题: 4.有两个矩阵a和b,均为两行三列.求两个矩阵之和.重载运算符“+”,使之能用于矩阵相加.如c=a+b. #include<iostr ...
- ssm框架的小总结
一.mybatis框架 mybatis框架主要就是完成持久层的实现,简化了持久层的开发, 1.首先是配置文件的编写,我们这里就命名为mybatis-config.xml,先配置文件头,然后加载连接数据 ...
- 解MySQL基准测试和sysbench工具
前言 作为一名后台开发,对数据库进行基准测试,以掌握数据库的性能情况是非常必要的.本文介绍了MySQL基准测试的基本概念,以及使用sysbench对MySQL进行基准测试的详细方法. 文章有疏漏之处, ...
- Vue:不同页面之间的传递参数(二)---query
1) 在router文件下的index.js中,添加相关路径 routes: [ { path: '/', name: 'Hello', component: HelloWorld }, { path ...
- (4.35)sql server清理过期文件【转】
在SQL Server中, 一般是用维护计划实现删除过期文件.不过直接用脚本也是可以的,而且更灵活. 下面介绍三种方法, 新建一个作业, 在作业的步骤里加上相关的脚本就可以了. --1. xp_del ...