Spring Project 생성
Spring Starter 지정 시 OAuth2 Client, Spring Security 정의
。OAuth2 Client만 정의가 필요

application.yml 파일에 OAuth 2.0 설정 정보 정의
。google은 Spring OAuth에서 공식 지원하는 OAuth Provider이므로 application.yml 설정이 간편
▶ 공식 지원하지 않는 kakao 등의 서비스에 비해 설정량이 적다.
spring:
application:
name: demo-oauth2-trash
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/bblog
username: ${dbUserId}
password: ${dbPassword}
jpa:
hibernate:
ddl-auto: create
security:
oauth2:
client:
registration:
google:
client-name: Google
client-id: ${clientId}
client-secret: ${clientSecretKey}
redirect-uri: "{baseUrl}/{action}/oauth2/code/{registrationId}"
scope:
- email
- profile
Spring Security에서 @Configuration 클래스 정의
@Configuration
public class SecurityConfig {
@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http){
return http
.csrf(csrf -> csrf.disable())
.cors( cors -> cors.disable() )
.oauth2Login(Customizer.withDefaults())
.authorizeHttpRequests(
auth -> auth
.requestMatchers("/login", "/sign-up")
.anonymous()
.requestMatchers("/user/**")
.hasAnyAuthority("USER", "ADMIN")
.requestMatchers("/admin/**")
.hasAuthority("ADMIN")
.anyRequest()
.authenticated()
).build();
}
}
HTTPSecurity객체.oauth2Login(Customizer.withDefaults())
。Spring Security에서 Oauth 2.0 로그인 기능을 활성화하는 메서드

▶ 다음 설정을 끝낸 후 localhost:8080/login 접속 시 해당 API를 보호하기위해 application.yml에 등록된 OAuth2 Provider ( ex. Google 등 )에 의해 로그인 옵션이 자동으로 표시됨.