SSO - 我们为何需要单点登录系统
SSO,Single Sign On,也就是单点登录,保证一个账户在多个系统上实现单一用户的登录
现在随着网站的壮大,很多服务会进行拆分,会做SOA服务,会使用dubbo做微服务,或者简单的小型分布式,
这样在服务与服务之间,或者系统与系统之间都是通过HTTP或者restful来进行通信的,
在以往的单系统应用中,我们都是把user存入session中的,需要用到的时候随时取,如果取不到就跳转到登录注册页面,非常简单的原理
但是在现如今的分布式应用中,如何保证session同步呢?
比如订单服务是在 order.jd.com
购物车服务在 cart.jd.com
那么这2个二级域名下的用户信息如何实现同步呢?
解决方案:
1. tomcat有一个session同步方案,就是一个传播机制,打个比方有A B C 3台tomcat,这3台tomcat的user信息都在session中并且保持一致,如果其中一台的user信息变化了,那么就会传播至另外两台,则实现同步,这样做没问题,但是仅仅只是在做tomcat集群的时候tomcat很少的时候会用,一旦集群增大,有100台,那么就互相传播吧,传播是需要性能损耗的,那么整个网站的性能就会被拉低,你的网站在你的网络风暴中就会晕死
2. nginx 非粘性session,说穿了就是一个session绑定传播,起初user的session在tomcatA上,tomcatA宕机了,那么session会把所有的信息传播到tomcatB,以此实现session共享,但是这也有个问题,就是传播的时候需要等待,快的时候1分钟左右,慢的时候要5分钟,用户的耐性有限,所以也不能这么做
3. 自己研发一套session高性能共享系统,我见过有这么做的公司,但是需要时间人力成本,所以不建议,如果你是BAT,随意~
4. SSO解决方案,目前比较流行的方案,自行开发一套单点登录系统,比如就使用 sso.jd.com,可以在这个二级域名下进行登录和注册,登录和注册都是以restful形式,为了可以同时提供给cms以及手机端的支持
登陆后把用户的相关信息存入redis,redis设置好过期时间,key为一个token,使用uuid,uuid生成后需要存入cookie中,失效时间随意定,但是再登录后需要重置redis和cookie中的失效时间
京东的实现:
sso的登录系统

sso的注册系统(京东是两套都分开了,这样布个集群怎么也得至少4台嘛)

首页

商品(商品详情应该都是生成的静态页面)

交易系统

这些都实现了sso,在soa各个系统中user可以随意走
拦截器配置:
在需要user信息的时候肯定需要使用到拦截器,如果获取不到user信息,那么就跳转到登录页面,但是需要注意的是需要把原页面作为redirectUrl暂时保存,登陆成功后需要跳转
获取user的时候就是从cookie中读取token,调用sso服务从redis中查询用户信息,如果有则继续,没有则登录
淘宝的二级域名:


最后,广告时间,咩哈哈 儿童进口爬行垫,床上用品,无毒绿色环保,妈妈的最佳选择!



SSO - 我们为何需要单点登录系统的更多相关文章
- 单点登录系统(SSO)之CAS(中央认证服务)
SSO(Single Sign On)单点登录系统,是在多个系统中值要求只要登录一次,就可以用已登录的身份访问多个系统,去掉了每次访问不同的系统都要重新登录的弊端. CAS(中央/集中认证服务):Th ...
- 单点登录系统(SSO)的开发思路
单点登录并不是一个新鲜的玩意儿,比较官方的解释是企业业务整合的解决方案之一,通俗来讲SSO就是一个通用的用户中心,国内比较流行的UCenter就是一套单点登录解决方案.而近期以CSDN明文存储用户密码 ...
- sso单点登录系统(解决session共享)
场景:假设一个用户将自己的登录信息提交到后台,如果session保存的信息分布在多台机器上,并且不共享,那么可能导致用户的登录信息出现短暂的丢失,为什么这样讲,因为用户访问服务器中间还要经过负载均衡服 ...
- 单点登录系统---SSO
1.------------------SSO介绍--------------------------------- 有什么卵用?搞什么飞机的? 大家看看这个图,一个系统是没有问题.如果是分布式的系统 ...
- 多平台的网站实现单点登录系统(SSO)的开发思路 让你的会员中心更加统一(参考资料)
单点登录并不是一个新鲜的玩意儿,比较官方的解释是企业业务整合的解决方案之一,通俗来讲SSO就是一个通用的用户中心,国内比较流行的UCenter就是一套单点登录解决方案.而近期以CSDN明文存储用户密码 ...
- 【SSO】单点登录系统
一.单点登录系统介绍 对于一个开发项目来说,每个项目都必不可少要有登录的这个功能.但是随着项目的变大,变大,再变大.系统可能会被拆分成多个小系统,咱们就拿支付宝和淘宝来说,咱们在淘宝上购物,然后就可以 ...
- sso单点登录系统
sso单点登录概念 1.一处登录,处处登录.会单独做一个单点登录系统,只负责颁发token和验证token,和页面登录功能. 2.通过在浏览器cookie中放入token,和在redis中对应toke ...
- sso单点登录系统的压力测试
环境:vmware centos7.4 2cpu 2核心 工具:ab压力测试工具 测试对象:sso单点登录系统 电脑:win10 4核 项目环境:flask+uwsgi+nginx(uwsgi 2进程 ...
- 单点登录系统(SSO)详细设计说明书(上篇)
1.引言 1.1编写目的 为了单点登录系统(SSO系统)的可行性,完整性,并能按照预期的设想实现该系统,特编写需求说明书. 同时,说明书也发挥与策划和设计人员更好地沟通的作用. 1.2 ...
随机推荐
- PHP学习笔记:用php读取xml文件
xml已经被json逐渐替代,现在用的api都是用貌似用的json,但是有些老的网站还是在用xml. 这里默认xml文件为:address.xml,存放在和读取的php文件相同级别目录,xml内容如下 ...
- j2ee log4j集中式日志解决方案logpool v0.3
V0.3相对于v0.2的更新如下:
- spring扫描classpath下特定package,并加载具有特定注解的接口
spring扫描classpath下特定package,并加载具有特定注解的接口. 在框架平台的开发中,通常有很多的情况通过spring配置方式来实现某些功能会使得框架平台难以使用和扩展,我们通常的做 ...
- 在Hadoop平台跑python脚本
1.开发IDE,我使用的是PyCharm. 2.运行原理 使用python写MapReduce的“诀窍”是利用Hadoop流的API,通过STDIN(标准输入).STDOUT(标准输出)在 ...
- CSS属性选择器温故-4
1.属性选择器就是通过元素属性来找到元素 2.属性选择器语法 CSS3遵循了惯用的编码规则,通配符的使用提高了样式表的书写效率,也使CSS3的属性选择器更符合编码习惯 3.浏览器兼容性 CSS选择器总 ...
- 当Thread.Sleep的暂停时间参数设置过小时,精度很差的解决方法
一.问题产生 在C#和C++中有这样一个函数:void Sleep(int Timeout),可以让线程暂停指定的毫秒数. 但是我在win8下调用这个函数实现按照固定频率发送udp数据包时,会有一个问 ...
- Ajax基本知识
1.创建xhr对象 var xmlhttp; if (window.XMLHttpRequest){// code for IE7+, Firefox, Chrome, Opera, Safari x ...
- HorizontalScrollView实现先左滑动后右滑动动画
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); s ...
- 弃用的异步get和post方法之代理方法
#import "ViewController.h" #import "Header.h" @interface ViewController () <N ...
- iOS-申请测试证书详解(多图原创)
申请测试证书详解 前言 App开发和发布过程中证书基础知识:1. Certification(证书)证书是对电脑开发资格的认证,每个开发者帐号有一套,分为两种:1) Developer Certifi ...