오답노트

[Spring Security] OAuth2 로그인 본문

Java/Spring

[Spring Security] OAuth2 로그인

권멋져 2023. 7. 28. 16:43

OAuth2

다량의 사용자를 보유하고 있는 벤더에게서 사용자 정보를 위임을 받아 사용자를 가입하게 하는 방식이다.

 

 

개발 환경 구축

dependencies {

    implementation("$boot:spring-boot-starter-oauth2-client")

}

build.gradle에 위와 같은 의존성을 추가한다.

 

spring:
  security:
    oauth2:
      client:
        registration:
          google:
            client-id: 532557492921-oanhrsrege0kqvb7q1v0v2o4lcu0ktlc.apps.googleusercontent.com
            client-secret: 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

 

application.yml 에 위와 같이 설정한다.

 

구현

@RestController("/")
public class HomeController {

    @PreAuthorize("isAuthenticated()")
    @GetMapping("/greeting")
    public OAuth2User main(@AuthenticationPrincipal OAuth2User user){
        return user;
    }

}

위 처럼 간단한 API를 구현한다.

return으로는 google에서 받은 정보를 화면에 출력한다.

 

@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class SnsLoginSecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
                .oauth2Login()
                ;
    }
}

위 처럼 SecurityConfiguration 클래스를 생성한다.

configure를 오버라이드해 @PreAuthorize가 있는 접속에는 oauth2login을 필요하게 만든다.