单点登陆系统SSO的简单设计和实现

本文详细介绍了如何使用Spring Cloud Security和Oauth2实现单点登录(SSO)功能,包括HTTP协议的无状态特性、会话机制、登录状态、系统设计、登录和注销流程,以及实际的系统业务实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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缺点:
    1. 同域名共享, 技术必须相同, 无法跨技术平台登录 (保证JSESSIONID相同)
    2. 安全性差

2.2 登录设计

单点登录: 认证中心

只有认证中心接收账户密码信息

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值