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中查询用户信息,如果有则继续,没有则登录

淘宝的二级域名:

原文链接:https://www.cnblogs.com/leechenxiang/p/5475728.html

我们为何需要单点登录系统相关推荐

  1. 单点登录系统实现基于SpringBoot

    今天的干货有点湿,里面夹杂着我的泪水.可能也只有代码才能让我暂时的平静.通过本章内容你将学到单点登录系统和传统登录系统的区别,单点登录系统设计思路,Spring4 Java配置方式整合HttpClie ...

  2. 单点登录系统SSO概述 | 单点登录讲解(1)

    本项目主要讲解的是单点登录系统的原理及其实现. 本章主要讲解的是单点登录系统的概述部分. 单点登录 单点登录顾名思义就是从一个系统进行登录操作,就可以访问其他附近的系统.单点登录避免了用户重复的登录过 ...

  3. codeigniter 禁止ip登录_「开源资讯」baigo SSO v4.0 beta-3 发布,单点登录系统

    来源:https://www.oschina.net/news/117020/baigo-sso-4-beta3-released 简介 baigo SSO 是一款基于 HTTP 协议的单点登录系统, ...

  4. WEB服务在单点登录系统中的应用研究

    WEB服务在单点登录系统中的应用研究 转载于:https://blog.51cto.com/hnoas/105573

  5. SON Web Token设计单点登录系统

    2019独角兽企业重金招聘Python工程师标准>>> 上次在<JSON Web Token - 在Web应用间安全地传递信息>中我提到了JSON Web Token可以 ...

  6. cas java单点登录_java单点登录系统CAS的简单使用

    http://blog.csdn.net/yunye114105/article/details/7997041 参考: http://blog.csdn.net/diyagea/article/de ...

  7. SpringBoot+MyBatis+Redis实现SSO单点登录系统(二)

    SpringBoot+MyBatis+Redis实现SSO单点登录系统(二) 三.代码 配置文件配置数据库,redis等相关的信息. # See http://docs.spring.io/sprin ...

  8. SpringBoot+MyBatis+Redis实现SSO单点登录系统(一)

    SpringBoot+MyBatis+Redis实现SSO单点登录系统(一) 一.SSO系统概述 SSO英文全称Single Sign On,单点登录.SSO是在多个应用系统中,用户只需要登录一次就可 ...

  9. SpringBoot 简单实现仿CAS单点登录系统

    SpringBoot 简单实现仿CAS单点登录系统 新境界开源开源SSO项目介绍 新境界开源SSO项目实现原理大致如下: 新境界开源SSO项目登录流程介绍 新境界开源SSO项目授权登录流程介绍 新境界 ...

最新文章

  1. Centos 上部署jeecms注意1
  2. freemarker中 感叹号、双感叹号、问号、双问号 的使用方法
  3. 为什要使用预编译SQL?(转)
  4. capture one 20 pro中文版
  5. POJ2186-Popular Cows(流行的奶牛)【tarjan,强连通分量,图论】
  6. 常见Java错误的十大列表(前100名!)
  7. (转) Android平台上关于IM的实践总结
  8. 【转】工作站和服务器的区别
  9. ansible安装使用入门
  10. sqlalchemy连接和关闭数据库
  11. python电影爬虫系统毕设_基于Python的豆瓣电影网络爬虫设计
  12. 英文文献很难找,哪里可以找英文文献呢?
  13. jsp免费虚拟空间 jhost邀请码
  14. 量化人才之战如何取胜
  15. 公司官网建站笔记(五):域名工信部备案完整流程并解析公网访问
  16. 数学建模之差分方程模型详解
  17. 【无关技术·朋友圈朝花朝拾】月相
  18. make: *** [ext/fileinfo/libmagic/apprentice.lo] Error 1
  19. 我的世界神奇宝贝服务器注册指令,《我的世界》神奇宝贝MOD召唤指令大全
  20. uniapp之导航栏设置和沉浸式的解决方法

热门文章

  1. 工作270:el-dialog的open回调
  2. 工作126:Vue.ls.set传值 然后取值
  3. 前端学习(2528):一个简单的vue app
  4. 前端学习(2476):表单数据绑定处理
  5. “约见”面试官系列之常见面试题第二十六篇之vue-router的hash和history(建议收藏)
  6. plsql轻量版记录类型2
  7. 前端学习(1369):中间件应用
  8. 前端学习(1095):ES5新增方法
  9. 前端学习(578):chrome devtools
  10. 前端学习(171):注释元素