SSO

SSO,即Single Sign On单点登录,是一个多系统页面用户验证解决方案。过去web应用比较简单,应用可以建立在一个系统中,使用http+cookie等即可以实现,登录验证等功能;但现代的web应用越来越大,一个应用可能由多个子系统组成,多系统应用中单单使用cookie已经不能实现验证功能了(域名不同等原因),除非每进一个子系统都登录一次。。。SSO出现解决这个问题。

SSO的原理大概是如下

  • 登录

    • 用户从子系统1进入,前端向后端请求数据。
    • 后端发现没有认证(没令牌),即未登录,让前端重定向。
    • 前端收到响应,携带当前的地址(登录以后需要知道怎么跳转回来)跳转到登录页面【认证中心】。
    • 用户输入账号密码,登录,前端向后端发送用户信息验证。
    • 后端生成令牌(随机字符串,怎么生成自定义),存储在session中(redis),并向前端返回登录成功信息(cookie携带了令牌)。
    • 登录页面前端根据第一步获取的地址再跳转回到之前页面。
  • 注销

    • 用户在子系统选择注销,前端发送请求给后端
    • 后端清除对应session里的令牌,返回注销成功响应

参考:

sso单点登录原理详解

编程概念精讲(二):单点登录(SSO)详解

最后更新: 2021年07月15日 23:56

原始链接: https://idkhts.github.io/2021/01/19/SSO/