我们已经准备好了,你呢?

我们与您携手共赢,为您的企业形象保驾护航!

当前位置: 首页 > 问答 > 基于springboot3实现单点登录(一): 单点登录及其相关概念介绍

引言

应网友要求,从本文开始我们将实现一套基于springboot3+springsecurity的单点登录认证系统。

单点登录的实现方式有多种,接下来我们会以oauth2为例来介绍和实现。

单点登录介绍

单点登录(Single Sign-On,简称SSO)是一种身份验证机制,它允许用户一次登录后,在多个应用系统中无需再次输入用户名和密码就能访问。SSO的主要价值在于提高用户体验、增强安全性和简化管理。
SSO的实现通常依赖于标准协议和技术,常见的有以下几种:

SSO常见的实现方案、优缺点及其适用场景对比如下:

方案说明优缺点适用场景
基于Cookie实现优点1:简单易实现:利用HTTP Cookie进行状态维护,实现相对简单。
优点2:无状态服务:服务器不需要保存每个用户的会话状态,减轻了服务器负担。
缺点1:跨域限制:Cookie受同源策略限制,不适用于跨域场景。
缺点2:安全性问题:Cookie容易被截获或伪造,需要HTTPS等安全措施保护。
同一域名或子域名下的多个应用。
基于Session实现状态持久化:可以存储更多的用户信息,支持更复杂的会话管理。
灵活性:通过分布式Session可以支持高可用和负载均衡。
性能开销:每次请求都需要查询Session信息,增加数据库或缓存系统的负担。
跨域问题:同样受限于同源策略,不适合跨域应用。
需要存储大量会话数据的场景,且应用位于同一域名下
基于Token的实现无状态:服务器不需要保存会话状态,提高可伸缩性和安全性。
跨域支持:Token可以跨域传输,适用于微服务架构或多域名环境。
安全性:使用加密算法确保Token的安全性。
Token过期管理:需要设计合理的Token生命周期和刷新机制。
存储开销:对于大量并发用户,Token的存储和管理可能成为瓶颈。
微服务架构或涉及多域名的应用。
联邦身份认证互操作性:遵循开放标准,支持跨组织的身份验证和授权。
灵活性:支持多种认证方式和第三方身份提供商。
复杂性:实现和配置较为复杂,需要对标准协议有深入理解。
依赖外部服务:如果使用第三方身份提供商,可能存在服务不可用的风险。
要跨组织或跨平台的身份认证,如企业间合作、***机构间的互联互通。如常见的Oauth2.0、CAS、SAML2.0等。
集中式身份管理统一管理:集中管理用户身份和权限,简化管理和审计工作。
高效性:避免了每个应用独立维护用户信息的重复工作。
单点故障:集中式服务一旦出现问题,可能影响所有依赖它的应用。
迁移成本:如果已有大量应用,迁移到集中式身份管理系统可能需要较大的工程量。
大型企业内部或组织结构复杂的应用集群,需要统一的用户管理和权限控制

OAuth2.0介绍

OAuth 2.0 是一种认证授权协议标准,有客户端模式(client_credentials)、密码模式(password)、简化模式(implicit)、授权码模式(authorization_code)、token刷新模式(refresh_token)。

介绍 OAuth 2.0 前,先介绍一下 OAuth 2.0 中涉及到的几种角色。

客户端(client):使用认证服务器作为认证渠道的平台,一般指的是第三方应用。例如,微信提供 OAuth 2.0 认证平台,我们的 APP 支持微信登录,那么我们的 APP 对于微信服务来说就是客户端。又例如,我们是***某一平台的服务,我们平台维护的数据代表着足够高的权威,那么其他***部门或合作方,需要从我们的平台中查询数据,或者利用我们平台的认证进行登录,那么其他部门或合作方的应用就是客户端。

资源服务器(Resource Server):简单的说,就是提供接口给客户端访问的服务器,访问资源服务器上受保护的接口,则需要带上令牌(token)。例如分布式微服务中的用户服务、订单服务等部署的服务器都属于资源服务器。

资源所有者(Resource Owner):拥有该资源的主体对象,一般指用户。客户端向资源服务器请求获取用户数据时,资源所有者参与确认授权或拒绝操作。

认证服务器(Authorization Server):对客户端和用户进行身份认证、授权的服务器,认证授权成功,则颁发令牌(token)。

客户端模式

客户端模式官网交互图如下:

者可以轻松地在不同服务之间实现单点登录(SSO)和身份信息共享。

总结

本文主要是对单点登录及其实现方式做了一些介绍,同时介绍了OAuth2.0和OAuth2.1中的授权模式和一些关键概念,以此来作为后续文章的理论铺垫。接下来,我将基于本文的理论结合实际代码进行完整的流程实现。

针对本文提到的各个内容有任何疑问或者建议欢迎留言评论~~~

创作不易,欢迎一键三连~~~~

  • 免责声明:本站内容(文字信息+图片素材)来源于互联网公开数据整理或转载,仅用于学习参考,如有侵权问题,请及时联系本站删除,我们将在5个工作日内处理。联系邮箱:chuangshanghai#qq.com(把#换成@)

    我们已经准备好了,你呢?

    我们与您携手共赢,为您的企业形象保驾护航!

    在线客服
    联系方式

    热线电话

    132-7207-3477

    上班时间

    周一到周五 09:00-18:00

    二维码
    线