Java-前后端分离-单点登录(SSO)

x33g5p2x  于2021-10-31 转载在 Java  
字(1.2k)|赞(0)|评价(0)|浏览(338)

一、什么是单点登录?

单点登录的英文名叫做:Single Sign On(简称SSO)。

以前的时候,一般我们就单系统,所有的功能都在同一个系统上。

后来,我们为了合理利用资源和降低耦合性,于是把单系统拆分成多个子系统。

比如阿里的淘宝和天猫,很明显地我们可以知道这是两个系统,但是你在使用的时候,登录了天猫,淘宝也会自动登录。,反过来也一样

简单来说,单点登录就是在多个系统中,用户只需一次登录,各个系统即可感知该用户已经登录。

二、回顾单系统登录

简单讲述一下怎么做单系统登录的:

众所周知,HTTP是无状态的协议,这意味着服务器无法确认用户的信息。于是乎,W3C就提出了:给每一个用户都发一个通行证,无论谁访问的时候都需要携带通行证,这样服务器就可以从通行证上确认用户的信息。通行证就是Cookie。

如果说Cookie是检查用户身上的”通行证“来确认用户的身份,那么Session就是通过检查服务器上的”客户明细表“来确认用户的身份的。Session相当于在服务器中建立了一份“客户明细表”。

HTTP协议是无状态的,Session不能依据HTTP连接来判断是否为同一个用户。于是乎:服务器向用户浏览器发送了一个名为JESSIONID的Cookie,它的值是Session的id值。其实Session是依据Cookie来识别是否是同一个用户。

所以,一般我们单系统实现登录会这样做:

登录: 将用户信息保存在Session对象中,如果在Session对象中能查到,说明已经登录如果在Session对象中查不到,说明没登录(或者已经退出了登录)

关闭浏览器: 从Session中删除用户的信息(关闭掉浏览器后,重新打开浏览器还能保持登录状态):配合Cookie来用

退出登录: 清除session,和本地cookie,跳转到登录页

具体流程:
可以看我博客的 JavaWeb-免登录UML时序图-(全网最详细) 这里面有最详细的教程

三、2种单系统登录UML时序图

因为细节太多了,所以这里只画出来流程的大概走向而具体的细节后面会说.

第一种单点登录(和淘宝,天猫一样) 都使用自己系统的登录注册页面,但是认证服务都是用一个

第二种单点登录,都使用SSO认证服务的登录页面,而注册页面因为每个系统账户注册的信息可能都不同那么可以利用重定向使用自己的注册页面(这个就需要自己设计了)

实战案例

我们这里只实现第一种时序图的单点登录,第二种的话自己看图写代码就行了比较简单

前端工具: WebStorm 或者vs code …
后端工具: IntelliJ IDEA

前端需要的技术: vue , jquery , js , ajax , 加密算法…

后端需要的技术 java, Springboot , cookie , session , redis 加密算法…

项目前后端代码和效果视频:
链接:https://pan.baidu.com/s/1yxQ0bIcwKXYsdjc3qYtQzQ
提取码:1234

相关文章

微信公众号

最新文章

更多