140-商城业务-认证服务-一篇文章带你解决单点登录+流程演示+源码提供

1.什么是单点登录

SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统

实现方式,下面摘录自百度百科,可能大家对cookie与session都不明白什么意思,下面我简单介绍下

cookie:是本次实现单点登录的核心参与人员,它通常是保存在内存中的,有失效性,有域名关联,在浏览器f12能看到 并且有个数与大小限制比如40k

session 保存在服务端 一般由sessionmanager统一管理,存放数据格式也是键值对,关于session的存储方式也可自行配置 比如 redis,mogondb,map等等,springsession就是一般就是配置存放在redis中

这里就是 实现大致步骤就是

 

2.简要单点登录系统 体验

(1)配置域名映射

俩客户端 一 认证中心服务端

(2)访问客户端1

跳转到认证服务器,填写用户信息后进行认证

(3)认证成功后成功跳转到客户端1的主页

(4)访问客户端2

发现直接进入到了客户端2的主页  此时也就实现了单点登录的效果

3.详细流程图

4.具体代码实现

代码挺多可以去github或者gitee去收索 sso 很多开源代码

也可以下载我的 下载链接如下

链接:百度网盘 请输入提取码 
提取码:nmef 
复制这段内容后打开百度网盘手机App,操作更方便哦

下载好后,配置文件中的redis相关配置可以改成自己的,或者去掉,然后代码中使用redis部分注释

期间我有个报错,http状态码为canceled   找了挺久没找到原因,后面看到浏览器 console的报错,百度才发现,原来是我重定向时 后面的域名前面没加协议名 http://

我的源码路径,比较简洁,省略了比如从数据库查找用户数据校验页面填写信息等,每个服务就一个Controller类,一个thymeleaf模板页面 

5.自己的单点登录原理总结

单点登录  :有个认证服务  子服务 ssoclient1.com  子服务 ssoclient2.com
每次 登录 如果在当前服务的session中没有用户信息  
先跳转到认证服务 
在认证服务中 校验账号密码 如果正确则 则把 用户信息放到 redis中
数据格式 为 前缀 + 账号(用户名或手机号) 
在当前域  ssoserver.com下  保存一个 cookie信息  并重定向到原访问客户端页面

原登录服务中就从redis中获取用户信息 然后把其添加到session中 页面就能获取了
 那么以后再访问ssoclient1.com某页面时
在拦截器中 看看 session中有没用户信息 有的话 
说明 已经登录过了 那么 这个客户端 就不需要登录了

再登录某客户端ssoclient2.com时 此时 它的session内并没有 用户信息  那么 他去访问 认证服务  访问的时候
认证服务判断 如果当前有cookie 用户信息 那么 直接免登 返回client2
到此 单点登录完成


 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我才是真的封不觉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值