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

淘宝的二级域名:

 

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

 

 

时间: 2024-08-03 13:57:05

SSO - 我们为何需要单点登录系统的相关文章

单点登录系统(SSO)详细设计说明书(下篇)

单点登录系统(SSO)详细设计说明书(下篇) 收藏   3.3输入输出要求解释各输入输出数据的类型,并逐项对格式.数值范围.精度等作出准确定义.对软件的数据输出及必须标明的控制输出量进行解释并举例,包括对硬拷贝报告(正常结果输出.状态输出及异常输出)以及图形或显示报告的描述. 3.4 流程逻辑      3.4.1注册流程图       3.4.2会员登录流程图       3.4.3 会员登出流程图           3.4.4 会员修改密码流程图         3.4.5 会员找回密码流

单点登录系统(SSO)详细设计说明书(上篇)

单点登录系统(SSO)详细设计说明书(上篇) 收藏 1.引言1.1编写目的              为了单点登录系统(SSO系统)的可行性,完整性,并能按照预期的设想实现该系统,特编写需求说明书.        同时,说明书也发挥与策划和设计人员更好地沟通的作用. 1.2背景          a.鉴于集团运营的多个独立网站(称为成员站点),每个网站都具有自己的身份验证机制,这样势必造成:生活中的             一位用户,如果要以会员的身份访问网站,需要在每个网站上注册,并且通过身份

SSO单点登录系统接入的例子

简单讲一下 SSO 单点登录系统的接入的原理,前提是系统本身有完善的用户认证功能,即基本的用户登录功能,那做起来就很方便了. SSO 登录请求接口往往是接口加上一个回调地址,访问这个地址会跳转到回调地址并带上一个 ticket 参数,拿着这个 ticket 参数再请求接口可以获取到用户信息,如果存在用户则自动登录,不存在就新增用户并登录. 比如这个 SSO 模型实现了两个方法,一个是获取接口 url,一个是凭 ticket 获取用户信息: PHP interface SSOLogin {    

单点登录系统CAS筹建及取得更多用户信息的实现

国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私募机构九鼎控股打造,九鼎投资是在全国股份转让系统挂牌的公众公司,股票代码为430719,为"中国PE第一股",市值超1000亿元.    ----------------------------------------------------------------------------

LemonLDAP::NG v1.0.3发布 模块化的Web单点登录系统

Lemonldap::NG 是一个模块化的 Web  单点登录系统,基于 Apache::Session 模块.它简化了构建应用程序的保护区域.可管理认证和授权,可实现完全的 AAA 保护.LemonLDAP::NG 是在 Lemonldap 基础上完全重新,tar包中包含所需的所有组件,不过为 Lemonldap 开发的模块将无法在 LemonLDAP::NG 上使用. LemonLDAP::NG is an open source Web Single Sign On product (We

技术-java权限+单点登录系统做过的同学进来

问题描述 java权限+单点登录系统做过的同学进来 最近工作不忙,想自己搞一个权限+单点登录系统.权限大概涉及组织.职位.人.菜单.按钮等,所有通过单点登录的系统,都用这套权限. 有没有搞过的大神,java 用哪些技术实现?给指点指点.

求资源-使用cas集成shiro框架生成单点登录系统

问题描述 使用cas集成shiro框架生成单点登录系统 谁有使用cas集成shiro框架生成单点登录系统的源码,最好是spring方式的,急用,谢了. 解决方案 http://www.360doc.com/content/15/0129/15/21706453_444745343.shtml

Web 单点登录系统 JA-SIG CAS

JA-SIG CAS(Central Authentication Service)为Web应用系统提供了单点登录服务.它的特性包括:一个开放和具有很好文档支持的协议:一个Java开源服务器组件:提供多种类型的客 户端包括Java..Net.PHP.Perl.Apache.uPortal等:能够与uPortal.BlueSocket.TikiWiki. Mule. Liferay.Moodle集成使用. -------------------------------------- 背景知识: 什

Web 单点登录系统

对于企业内部系统来说,CAS系统是一个应用最广的开源单点登陆实现了,其实现模仿Kerberos的一些概念,例如KDC.TGS等等,都是来自于Kerberos.具体可参见 用CAS原理构建单点登录.互联网发展之后,多个网站需要统一认证,业界需要适合互联网的单点登陆技术. 2002年,微软提出了passport服务,由微软统一提供帐号和认证服务,理所当然,大家都不愿意受制于微软,但是很认同微软提出WEB SSO理念,于是产生了Liberty Alliance,另外指定一套标准,这套标准发展起来就是S