SpringBoot集成Gitee OAuth2登录

半兽人 发表于: 2025-08-19   最后更新时间: 2025-08-20 15:40:57  
{{totalSubscript}} 订阅, 426 游览

这是一个 SpringBoot 集成 Gitee OAuth2 登录 的完整示例,包含客户端的核心配置。

1. 在 Gitee 创建 OAuth 应用

  1. 登录 Gitee 开发者平台
  2. 新建应用,填写:

    • 应用名称:随便起
    • 应用回调地址http://localhost:8080/login/oauth2/code/gitee
      (这个要和 Spring Security 配置一致)
  3. 保存后,你会得到:

    • Client ID(即 app id)
    • Client Secret(即 app secret)

2. Spring Boot 配置(application.yml)

核心是 spring.security.oauth2.client 节点:

spring:
  security:
    oauth2:
      client:
        registration:
          gitee:
            client-id: 你的ClientID
            client-secret: 你的ClientSecret
            client-authentication-method: client_secret_post
            authorization-grant-type: authorization_code
            redirect-uri: "{baseUrl}/login/oauth2/code/{registrationId}"
            scope: user_info
            client-name: Gitee
        provider:
          gitee:
            authorization-uri: https://gitee.com/oauth/authorize
            token-uri: https://gitee.com/oauth/token
            user-info-uri: https://gitee.com/api/v5/user
            user-name-attribute: name

3. 安全配置(Java Config)

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.web.SecurityFilterChain;

@Configuration
public class SecurityConfig {

    @Bean
    public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
        http
            .authorizeHttpRequests(auth -> auth
                .requestMatchers("/", "/login").permitAll()
                .anyRequest().authenticated()
            )
            .oauth2Login(oauth2 -> oauth2
                .loginPage("/login")
            );
        return http.build();
    }
}

4. 控制器示例

import org.springframework.security.core.annotation.AuthenticationPrincipal;
import org.springframework.security.oauth2.core.user.OAuth2User;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class HomeController {

    @GetMapping("/")
    @ResponseBody
    public String home(@AuthenticationPrincipal OAuth2User principal) {
        if (principal != null) {
            return "你好, " + principal.getAttribute("name") + 
                   " (Gitee ID: " + principal.getAttribute("id") + ")";
        }
        return "未登录,<a href='/oauth2/authorization/gitee'>点此登录</a>";
    }

    @GetMapping("/login")
    public String login() {
        return "login"; // 这里可以放一个自定义登录页
    }
}

5. 使用

  1. 启动应用
  2. 打开 http://localhost:8080/
  3. 点击登录跳转到 Gitee 授权
  4. 登录并同意授权后,跳回本地应用,拿到用户信息

这样就完成了 Spring Boot + Spring Security OAuth2 登录 Gitee 的客户端核心配置。

更新于 2025-08-20

查看OAuth 2.0更多相关的文章或提一个关于OAuth 2.0的问题,也可以与我们一起分享文章