单点登陆是什么
单点登录的英文名称为 Single Sign-On,简写为 SSO。它是一个用户认证的过程,允许用户一次性进行认证之后,就访问系统中不同的应用;而不需要访问每个应用时,都重新输入密码。
SSO单点登陆的好处
- 用户层面。更加方便,减少了不同系统中登陆耗费的时间,减少了登陆出错的可能性
- 公司层面。安全性,系统管理员有了更好的方法管理用户,包括可以通过直接禁止和删除用户来取消该用户对所有系统资源的访问权限。
- 公司层面。减少工作量,减少了系统管理员增加、删除用户和修改用户权限的时间。
SSO的实现方式
- SSO系统生成一个token,并将用户信息存到Redis中,并设置过期时间
- 其他系统请求SSO系统进行登录,得到SSO返回的token,写到Cookie中
- 每次请求时,Cookie都会带上,拦截器得到token,判断是否已经登录
SSO本质
- 将登陆功能抽取为一个系统(SSO),其他系统请求SSO进行登录
- 本来将用户信息存到Session,现在将用户信息存到Redis
衍生问题 Cookie 跨域,有以下解决方式
- 客户端将 Cookie 中的 Token 解析出来,每次请求都把 Token 带上
- 在写到客户端的时候设置 Cookie 的 domain,多个域名共享 Cookie
- 将 Token 保存在 SessionStroage 中(不依赖Cookie就没有跨域的问题了)
参考链接
https://juejin.im/post/5cdd42f9518825693f1ebf8d