Spring Cloud Security 为构建安全的SpringBoot应用提供了一系列解决方案,结合Oauth2可以实现单点登录功能,本文将对其单点登录用法进行详细介绍
1.1 HTTP协议
- web采用无状态HTTP协议, 每次请求独立处理
浏览器->服务器 | 浏览器->服务器
浏览器<-服务器 | 浏览器<-服务器
- 任何用户都能访问, 资源需要保护
- 鉴别浏览器请求, 需要会话机制
1.2 会话机制
- 浏览器第一次请求, 服务器创建会话(), 响应+会话ID
- 浏览器储存ID, 请求+ID
- 浏览器通过Cookie维护ID
1.3 登录状态
- 浏览器第一次发送请求, 验证账户密码成功, Tomcat设置登录状态:
HttpSession session = request.getSession();
session.setAttribute("isLogin", true);
- Tomcat响应JSESSION ID, 浏览器接收
- 浏览器设置cookie(JSESSIONID)
- 用户再次访问, Tomcat查看登录状态
HttpSession session= request.getSession();
session.getAttribute("isLogin");
每次请求受保护资源时都会检查会话对象的登录状态,只有 isLogin=true 的会话才能访问,登录机制因此实现
2 系统设计
2.1 概述
- 单系统登录不适用web集群
- cookie需要对应网站域名
- cookie缺点:
- 同域名共享, 技术必须相同, 无法跨技术平台登录 (保证JSESSIONID相同)
- 安全性差
2.2 登录设计
单点登录: 认证中心
只有认证中心接收账户密码信息