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 ...
随机推荐
- 解决SlidingMenu和SwipeBackLayout右滑事件冲突问题
SwipeBackLayout向右滑动关闭当前Activity,SlidingMenu向右滑动则是打开menu部分.在同一个Activity中,当SlidingMenu处于打开状态时,此时向右滑动,事 ...
- SpringMVC中出现" 400 Bad Request "错误(用@ResponseBody处理ajax传过来的json数据转成bean)的解决方法
最近angularjs post到后台 400一头雾水 没有任何错误. 最后发现好文,感谢作者 SpringMVC中出现" 400 Bad Request "错误(用@Respon ...
- ASP.NET WebAPI 09 Controller的激活
在Controller之前我们先回顾一下HttpMessageHandler通道. 在这个图中我留一个HttpContollerDispatcher没有说明.因为这个类也是继承自HttpMessage ...
- ASP.NET Web API获取Model元数据
using System; using System.Web.Http; using Common; namespace ConsoleApp { internal class Program { p ...
- 实验三同学评论http://home.cnblogs.com/u/MyDring/
47赖燕菲http://www.cnblogs.com/lyfzero/ :该同学实验整体思路较清晰,希望把完整代码发布出来. 48李小娜http://www.cnblogs.com/dmbs/ :该 ...
- [ javascript canvas toDataURL() clip() ] javascript canvas toDataURL() clip() 属性及方法演示
<!DOCTYPE html> <html lang='zh-cn'> <head> <title>Insert you title</title ...
- 关于制作报奖PPT的小结
从9月26日接到制作报奖材料的任务开始,6个人(不包括审查领导和美工人员)忙活了半个多月终于交稿了,翻一下时间日志,10月1日前大概投入了13个小时,10月13日交稿又讨论修改了67个小时,总共算起来 ...
- 在cmd中获取ip地址和主机名
将下面的文件放到一个bat文件当中,以管理员身份运行. @echo off &setlocal enabledelayedexpansion Rem '/*========获取本机的IP地址( ...
- C99标准的新特性
C语言标准的发展 C语言的发展历史大致上分为4个阶段:Old Style C.C89.C99和C11. C89是最早的C语言规范,于1989年提出,1990年先由ANSI(美国国家标准委员会,Amer ...
- 异步get请求之代理方法
#import "ViewController.h" #import "Header.h" @interface ViewController ()<NS ...