2025-06-02 01:26:35 +08:00
|
|
|
|
# 项目简介
|
2025-06-02 01:23:51 +08:00
|
|
|
|
|
2025-06-02 01:26:35 +08:00
|
|
|
|
本项目基于 Spring Boot 3.5.0 和 Keycloak 24,提供 OAuth2/OIDC 认证与权限管理的问卷服务系统。
|
|
|
|
|
|
|
|
|
|
|
|
## 主要技术栈
|
|
|
|
|
|
|
|
|
|
|
|
- **Spring Boot 3.5.0**:简化 Java Web 应用开发,提供自动配置和生产级特性。
|
|
|
|
|
|
- **Keycloak 24**:开源身份与访问管理,支持 OAuth2/OIDC 协议。
|
|
|
|
|
|
- **Maven**:依赖与构建管理。
|
|
|
|
|
|
|
|
|
|
|
|
## 关键依赖(pom.xml 摘录)
|
|
|
|
|
|
|
|
|
|
|
|
```xml
|
|
|
|
|
|
<parent>
|
|
|
|
|
|
<groupId>org.springframework.boot</groupId>
|
|
|
|
|
|
<artifactId>spring-boot-starter-parent</artifactId>
|
|
|
|
|
|
<version>3.5.0</version>
|
|
|
|
|
|
</parent>
|
|
|
|
|
|
<dependencies>
|
|
|
|
|
|
<dependency>
|
|
|
|
|
|
<groupId>org.springframework.boot</groupId>
|
|
|
|
|
|
<artifactId>spring-boot-starter-web</artifactId>
|
|
|
|
|
|
</dependency>
|
|
|
|
|
|
<dependency>
|
|
|
|
|
|
<groupId>org.springframework.boot</groupId>
|
|
|
|
|
|
<artifactId>spring-boot-starter-oauth2-client</artifactId>
|
|
|
|
|
|
</dependency>
|
|
|
|
|
|
<dependency>
|
|
|
|
|
|
<groupId>org.springframework.boot</groupId>
|
|
|
|
|
|
<artifactId>spring-boot-starter-security</artifactId>
|
|
|
|
|
|
</dependency>
|
|
|
|
|
|
<dependency>
|
|
|
|
|
|
<groupId>org.springframework.boot</groupId>
|
|
|
|
|
|
<artifactId>spring-boot-starter-oauth2-resource-server</artifactId>
|
|
|
|
|
|
</dependency>
|
|
|
|
|
|
<dependency>
|
|
|
|
|
|
<groupId>org.projectlombok</groupId>
|
|
|
|
|
|
<artifactId>lombok</artifactId>
|
|
|
|
|
|
<optional>true</optional>
|
|
|
|
|
|
</dependency>
|
|
|
|
|
|
</dependencies>
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## 认证与安全配置
|
|
|
|
|
|
|
|
|
|
|
|
- 认证方式:采用 Keycloak 作为 OAuth2/OIDC 认证服务器。
|
|
|
|
|
|
- 主要配置文件:`src/main/resources/application.properties`,配置了 keycloak 的 client-id、client-secret、issuer-uri 等。
|
|
|
|
|
|
- 主要安全配置类:`config/OAuth2LoginSecurityConfig.java`,实现了 Spring Security 的 OAuth2 登录与权限控制。
|
|
|
|
|
|
|
|
|
|
|
|
## Keycloak 与 Spring Boot 3 的兼容性说明
|
|
|
|
|
|
|
|
|
|
|
|
Keycloak 官方适配的 keycloak-spring-boot-starter 目前仅支持到 Spring Boot 2.x,尚未完全支持 Spring Boot 3.x 及其 Spring Security 6 体系。因此在 Spring Boot 3 项目中,推荐直接采用 Spring Security 官方的 OAuth2/OIDC 客户端能力对接 Keycloak,而不是依赖 keycloak-spring-boot-starter。
|
|
|
|
|
|
|
|
|
|
|
|
## 为什么采用 OAuth2/OIDC
|
|
|
|
|
|
|
|
|
|
|
|
- OAuth2/OIDC 是业界主流的认证与授权协议,安全性高、扩展性强。
|
|
|
|
|
|
- Spring Security 原生支持 OAuth2/OIDC,易于与 Keycloak 等身份服务集成。
|
|
|
|
|
|
- 采用 OAuth2/OIDC 可实现单点登录、细粒度权限控制、第三方登录等高级特性。
|
|
|
|
|
|
- 避免与 Keycloak 版本强绑定,提升系统可维护性和兼容性。
|
|
|
|
|
|
|
|
|
|
|
|
## 目录结构
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
├── pom.xml
|
|
|
|
|
|
├── src/
|
|
|
|
|
|
│ ├── main/
|
|
|
|
|
|
│ │ ├── java/com/tanqidi/survey/
|
|
|
|
|
|
│ │ │ ├── SurveyServiceApplication.java
|
|
|
|
|
|
│ │ │ ├── config/OAuth2LoginSecurityConfig.java
|
|
|
|
|
|
│ │ │ ├── controller/
|
|
|
|
|
|
│ │ │ └── dto/
|
|
|
|
|
|
│ │ └── resources/application.properties
|
|
|
|
|
|
│ └── test/
|
|
|
|
|
|
└── ...
|
|
|
|
|
|
```
|