视频演示: https://www.bilibili.com/video/BV1M54y1z7A9/
需要完成以下步骤:
创建工程并引入依赖包
- spring-boot-starter-oauth2-client
- spring-boot-starter-security
- spring-boot-starter-web
- 创建Security配置信息
- 创建Github、Google的client-id和client-secret
Oauth2GoogleLoginApplication.java
package com.deepincoding.oauth2googlelogin;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplicationpublic class Oauth2GoogleLoginApplication { public static void main(String[] args) { SpringApplication.run(Oauth2GoogleLoginApplication.class, args); }}
MessageController.java
package com.deepincoding.oauth2googlelogin;import lombok.extern.log4j.Log4j2;import org.springframework.security.core.annotation.AuthenticationPrincipal;import org.springframework.security.oauth2.core.user.OAuth2User;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RestController;@RestController@Log4j2public class MessageController { @GetMapping("/") public String hello(){ return "Hello Google Github."; } @GetMapping("/guest") public String guest(){ return "Hello Guest."; } @GetMapping("/admin") public OAuth2User admin(@AuthenticationPrincipal OAuth2User principal){ return principal; }}
SecurityConfig.java
package com.deepincoding.oauth2googlelogin;import org.springframework.context.annotation.Configuration;import org.springframework.security.config.annotation.web.builders.HttpSecurity;import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;@Configurationpublic class SecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http .antMatcher("/**").authorizeRequests() .antMatchers("/", "/guest").permitAll() .anyRequest().authenticated() .and() .oauth2Login(); }}
application.yml
spring: security: oauth2: client: registration: github: client-id: d64d35f9f66ea04ba64f client-secret: b84a72f20fcec596deb947860cd4eacaf55b0f5b google: client-id: 195066099347-nj4et113vfl9p0aq9k5cb4hd6kg0c3hh.apps.googleusercontent.com client-secret: Wk5XNm8wv36R0h4zGCxWOfYn
本文使用 mdnice 排版