springboot 单点登录

1、springboot 单点登录

单点登录英文全称Single Sign On,简称就是SSO。它的解释是:在多个应用系统中,只需要登录一次,就可以访问其他相互信任的应用系统
在这里插入图片描述

2、流程图

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3、流程解析

现在有认证服务器 ssoserver.com,客户端client1.com和客户端client2.com 两个不同域名的服务器,并且没有子域名关系(如果两个客户端有子域名关系,session进行统一存储,可以通过SpringSession手动去设置session的作用域,放大作用域,取父域名最为session的作用域,来完成session数据共享),进行统一登录认证的时候,客户端1和客户端2都需要到认证服务器去登录。登录流程如下:

  1. 当浏览器向客户端client1.com发出访问受保护资源的请求时
  2. 客户端client1.com收到访问请求后,会判断当前请求的用户是否登录,什么样是登录状态的?
    1. 请求的时候参数携带token,获取token之后,查询出用户信息保存到session中,下次可以通过cookie中的信息可以访问到用户数据。
    2. 已经存在session,通过cookie中的信息可以访问到用户数据。
  3. 如果请求接口的时候,用户没有登录,则让浏览器重定向到新的位置http://ssoserver.com:8080/login.html?redirect_url=http://client1.com:8081/employees,redirect_url之前是认证服务器的地址,后面是认证成功之后要跳转的地址。
  4. 接着去访问认证系统的登录页面,在登录页面会判断是否登录过,也就说判断当前浏览器中是否保存的有上一次登录成功之后留下的cookie信息,例如上一次成功之后留下来的sso_token信息
  5. 如果之前没有系统进行登陆过,则在浏览器上展示登录页面信息,输入账号密码,并且携带成功之后的回调地址进行登录认证
  6. 登录成功之后,会做两件事,一件事是留下客户端登录之后的痕迹,即在客户端上保留ssoserver.com的cookie信息,第二件事是携带登录成功之后的token信息,返回回调地址,会携带token进行接口的再次校验,校验通过之后,会将用户信息保存到session中。
  7. 在客户端client1.com登录成功之后,浏览器也向客户端client2.com也发出访问受保护资源的请求
  8. 客户端client2.com收到访问请求后,会判断当前请求的用户是否登录
  9. 如果客户端client2.com判断用户没有登录,则让浏览器重定向到新的位置http://ssoserver.com:8080/login.html?redirect_url=http://client2.com:8081/boss,但是因为之前客户端client1.com登录成功之后,留下的有cookie信息,当再次访问该域名下的接口时,会携带cookie信息,接口认证通过之后,会携带token返回回调地址,在client2.com认证通过之后,会根据token信息获取到用户信息,然后将这些用户数据保存到session中。
  10. 之后无论哪个系统访问,自己的session里面都保存了token对应的用户信息,就不用去登录。
  • 1
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值