2025-07-14 17:38:58 +08:00
2025-06-02 02:00:00 +08:00
2025-07-14 17:38:58 +08:00
2025-06-02 01:39:15 +08:00
2025-06-02 01:39:15 +08:00
2025-06-02 01:39:15 +08:00
2025-06-02 01:39:15 +08:00
2025-06-02 01:39:15 +08:00
2025-06-02 01:39:15 +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 摘录)

<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/
└── ...
Description
No description provided
Readme 49 KiB
Languages
Java 100%