Spring Authorization Server 0.2.3 + Spring Boot 2.6.7 实战:构建企业级OAuth2单点登录系统
在微服务架构盛行的今天,统一的身份认证和授权机制成为系统设计的核心需求。Spring Authorization Server作为Spring生态中新兴的授权服务器实现,相比传统的Spring Security OAuth2提供了更符合OAuth2.1规范的解决方案。本文将带您从零开始,构建一个完整的OAuth2单点登录系统,涵盖授权服务器、资源服务器和客户端的全流程配置。
1. 环境准备与项目初始化
1.1 技术栈选型
我们选择以下技术组合构建系统:
-
核心框架:
- Spring Boot 2.6.7
- Spring Authorization Server 0.2.3
- Spring Security 5.6.3
-
数据库:
- MySQL 5.7(存储客户端注册信息)
-
开发工具:
- JDK 1.8+
- Maven 3.6+
- Lombok(简化代码)
1.2 项目结构设计
采用Maven多模块架构,划分三个核心模块:
code复制oauth2-demo-parent
├── oauth2-server # 授权服务器 (9000端口)
├── oauth2-resource # 资源服务器 (8001端口)
└── oauth2-client # 客户端应用 (8000端口)
1.3 关键依赖配置
在父工程pom.xml中统一管理依赖版本:
xml复制<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.6.7</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-oauth2-authorization-server</artifactId>
<version>0.2.3</version>
</dependency>
</dependencies>
</dependencyManagement>
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 授权服务器实现
2.1 数据库准备
创建三张核心表存储OAuth2元数据:
sql复制-- 客户端注册表
CREATE TABLE oauth2_registered_client (
id varchar(100) NOT NULL,
client_id varchar(100) NOT NULL,
client_secret varchar(200) DEFAULT NULL,
client_name varchar(200) NOT NULL,
authorization_grant_types varchar(1000) NOT NULL,
redirect_uris varchar(1000) DEFAULT NULL,
scopes varchar(1000) NOT NULL,
PRIMARY KEY (id)
);
-- 授权确认记录表
CREATE TABLE oauth2_authorization_consent (
registered_client_id varchar(100) NOT NULL,
principal_name varchar(200) NOT NULL,
authorities varchar(1000) NOT NULL,
PRIMARY KEY (registere
