这是一个 SpringBoot 集成 Gitee OAuth2 登录 的完整示例,包含客户端的核心配置。
1. 在 Gitee 创建 OAuth 应用
- 登录 Gitee 开发者平台
新建应用,填写:
- 应用名称:随便起
- 应用回调地址:
http://localhost:8080/login/oauth2/code/gitee
(这个要和 Spring Security 配置一致)
保存后,你会得到:
- 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. 使用
- 启动应用
- 打开
http://localhost:8080/ - 点击登录跳转到 Gitee 授权
- 登录并同意授权后,跳回本地应用,拿到用户信息
这样就完成了 Spring Boot + Spring Security OAuth2 登录 Gitee 的客户端核心配置。
