单点登陆sso

分布式项目中,一个应用,因为功能不同往往被拆分成了多个应用,后台应用还好,拆就拆了,顶多就是多发起几次RPC调用就好了,但是web应用因为要和用户直接打交道,从一个应用到另一个应用还要在登陆就不好了,单点登陆就是用来解决这个问题的。

我这里说的思路是用浏览器的cookie在相同domain(域名的结尾,例如:mazhenhua.test.com和penglei.test.com,那domain就是test.com)下共享来实现的

这里写图片描述

浏览器主站点发起访问请求,主站点先过滤session的中的用户信息,有则正常访问。

这里写图片描述

主站点 session中没有用户信息,向认证中心发起RPC调用参数是在domin下共享的那个cookie的值token,和浏览器访问自己的那个URL(认证中心登陆成功跳转的时候会用到),认证中心直接透传查询memcached , 有则将数据传递给主站点,刷新session。

memcached 中存的是以token为key,sso(可以是一个json串)为value,sso不存放密码等隐私信息,一般只会存放会员的唯一标识,主站点拿到这个会员唯一标识,再去RPC远程调用会员信息查询详细的会员信息,装进自己session

memcached 中的token被查询一次之后,重新设置一下,过期时间,自动过期(后面会介绍怎么保存)

这里写图片描述

memcached 中也没有token信息,认证中心直接弹出登陆页面供用户登陆,登陆成功后将用户信息MD5加密获取加密值作为token
1、保存cookie,key随便起,统一就好,value就是这个token,保存时共享在domain下,供其他应用使用
2、同时将数据保存进memcached key就是token,value就是sso登陆信息,并设置过期时间一把是30分钟。

代码:https://github.com/mazh1992/sso

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值