视频演示: https://www.bilibili.com/video/BV1M54y1z7A9/

需要完成以下步骤:

  1. 创建工程并引入依赖包

    • spring-boot-starter-oauth2-client
    • spring-boot-starter-security
    • spring-boot-starter-web
  2. 创建Security配置信息
  3. 创建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 排版