Files
2025-06-02 01:39:15 +08:00

76 lines
2.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 项目简介
本项目基于 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/
└── ...
```