2023Job所需知识点

SSO

单点登录

SSO(Single Sign On):
# 背景
后来,我们为了合理利用资源和降低耦合性,于是把单系统拆分成多个子系统。
栗子:比如阿里系的淘宝和天猫,很明显地我们可以知道这是两个系统,但是你在使用的时候,登录了天猫,淘宝也会自动登录。
简单来说,单点登录就是在多个系统中,用户只需一次登录,各个系统即可感知该用户已经登录。

单系统

  • 用户登录时,验证用户的账户和密码
  • 生成一个Token保存在数据库中,将Token写到Cookie中
  • 将用户数据保存在Session中
  • 请求时都会带上Cookie,检查有没有登录,如果已经登录则放行

多系统登录的问题与解决

Session不共享问题

  • SSO系统生成一个token,并将用户信息存到Redis中,并设置过期时间
  • 其他系统请求SSO系统进行登录,得到SSO返回的token,写到Cookie中
  • 每次请求时,Cookie都会带上,拦截器得到token,判断是否已经登录

总结为两个改变

  • 将登陆功能抽取为一个系统(SSO),其他系统请求SSO进行登录
  • 本来将用户信息存到Session,现在将用户信息存到Redis
    思考:Ids4 :vue -> ids4 -> vue ---> 后台系统

Cookie跨域的问题

上面我们解决了Session不能共享的问题,但其实还有另一个问题。Cookie是不能跨域的

比如说,我们请求https://www.google.com/时,浏览器会自动把google.com的Cookie带过去给google的服务器,而不会把https://www.baidu.com/的Cookie带过去给google的服务器。

这就意味着,由于域名不同,用户向系统A登录后,系统A返回给浏览器的Cookie,用户再请求系统B的时候不会将系统A的Cookie带过去。

针对Cookie存在跨域问题,有几种解决方案:

服务端将Cookie写到客户端后,客户端对Cookie进行解析,将Token解析出来,此后请求都把这个Token带上就行了
多个域名共享Cookie,在写到客户端的时候设置Cookie的domain。
将Token保存在SessionStroage中(不依赖Cookie就没有跨域的问题了)
到这里,我们已经可以实现单点登录了。

CAS原理


微服务

学习自‘老张的哲学-blogcore高级进阶’

认证平台设计

管理分配

数据问题

SOA依赖于事件总线

跨域:可要可不要:因为前端都是通过网关的形式向客户端发送请求
强单体:微服务中,子服务不需要
services.AddSession();//微服务时,子服务不需要

网关/Ocelot

OOP三大特性

https://blog.csdn.net/qq_57734519/article/details/120515634

posted @ 2023-01-28 16:25  弗里德里希恩格hao  阅读(1)  评论(1)    收藏  举报