单点登录
2020-07-14 06:02
79 查看
前言
现在系统微服务架构已是一种趋势,系统拆分的更细,对外系统都拥有自己域名,那么系统之间的互相访问,就涉及到单点登录问题。本文是针对根域名相同,子域名之间的单点登录原理讲解,该类单点登录也是使用最频繁,实现最简单的。
实现方案
概念介绍
根域说明:cart.joybuy.com trade.joybuy.com passport.joybuy.com以上三个域名都有相同的二级域名,joybuy.com,那么joybuy.com就是以上三个域名根域,反过来这三个域名是根域的子域。
cookie介绍:cookie是保存在浏览器端用户的一些会话信息,会随着请求传输到服务器端,但请求里的cookie是由自己域名下的,及自己根域名下的cookie组成,当然cookie也只能写到自己的域,及自己域的根域下。
原理说明
- 用户第一次登录成功后,为用户生成唯一的token,将token写到用户根域的cookie里
- 之后用户访问任何一个子域系统,都会将token传输到服务器端
- 服务器端验证用户token的有效性,如果有效,允许访问资源,否,跳转到登录,重复1步骤
token的有效性验证
- 方案1:登录系统为用户生成token后,将token存储起来,请求到达服务器端后,从cookie中获得token,去token容器中查询token,如果能够取到,证明token有效,否则用户未登录,或token过期,或伪造。
- 方案2:token用一个key进行加密所生成,请求到达服务器端,从cookie中获得token通过key解密,如果能解密成功,并且解密结果里的过期时间,还未过期,证明有效。如果解密结果为乱码,说明token是伪造的。
真实案例流程图
转载于:https://my.oschina.net/u/3057539/blog/3082404
相关文章推荐
- C# Cookies跨域登陆(写入cookie登录)
- SQL server2005中如何创建登录密码
- 保存登录plsql developer 的用户名和密码
- XP局域网远程登录2003server的问题
- 远程登录ubuntu12.04只有桌面
- Facebook(一)自定义登录按钮,登陆完毕后清除缓存的Session信息
- XMPP使用简介--登录
- yii_1_1_17_6(数据库连接配置与模型定义与后台登录验证-2016-2-10)
- java web和Android第一次交互(登录)
- 安卓webview嵌套不同的H5页面,咋让他们的登录状态同步啊 ?
- Vue中保存用户登录状态
- 编写代码模拟三次密码输入的场景。最多能输入三次密码,密码正确,提示“登录成功”, 密码错误,可以重新输入,最多输入三次。三次均错,则提示退出程序。
- steam第三方授权登录不稳定(openid4java)
- 第三方QQ登录官方文档步骤
- linux使用自定义用户远程登录以及禁用root
- 如何防止同一帐户重复登录系统(ASP.net)2
- 已成功与服务器建立连接,但是在登录过程中发生错取。(provider:共享内存提供程序,error:0-管道的另一端上无任何进程。)(Microsoft SQL Server,错误:233)
- 关于MSSQL中window用户可以登录,sa用户无法登录
- Java Web开发: 基于HttpServlet的用户登录网站 实例
- WIN7隐藏其他用户在登录界面显示的方法