Spring Security OAuth2를 이용한 로그인 구현 - OAuth2를 이용한 인증 사용하기

목차

1. OAuth2를 이용한 인증 사용하기

참고

Google에 Web Application 등록하기

Google의 OAuth2 서비스를 이용하기 위해서 사용할 Web Application을 등록해 Client IdClient Secret을 받아야 한다.

API및 서비스 > OAuth 동의 화면을 클릭

사용자 인증 정보 만들기 > OAuth 클라이언트 ID를 선택

애플리케이션 유형으로는 웹 애플리케이션을 선택한다.
승인된 리디랙션 URI로는 http://localhost:8080/login/oauth2/code/google 를 기입해준다.

OAuth 클라이언트가 생성됐다는 알림과 함께 Client IDClient Secret이 생성된다.

OAuth2 설정 적용하기

SpringBoot에서 Google OAuth2 인증을 사용하기 위해서 Google로부터 생성된 Client ID와 Client Secret을 기입해준다.

application.yml

spring:
security:
oauth2:
client:
registration:
google:
client-id: Google로부터 받은 Client ID
client-secret: Google로부터 받은 Client Secret

Control 구현

/ 경로는 누구나 접근이 가능하도록 해 Hello World 문구가 반환되지만 /restricted 경로는 인증된 사용자만 restricted 문구를 받을 수 있도록 할 것이다.

Oauth2Controller.class

@RestController
public class Oauth2Controller {
@GetMapping("/")
public String Hello(){
return "Hello World";
}

@GetMapping("/restricted")
public String restricted(){
return "restricted";
}
}

Spring Security 설정하기

/ 경로는 누구나 접근이 가능하도록 하고 그외 모든 경로는 인증된 사용자만 사용할 수 있도록 설정한다.
HttpSecurity객체의 oauth2Login() 메소드를 사용해 OAuth2 인증방식을 사용하도록 한다.

SecurityConfig.class

@EnableWebSecurity
@RequiredArgsConstructor
public class SecurityConfig extends WebSecurityConfigurerAdapter {
private final CustomOAuth2UserService customOAuth2UserService;

@Override
protected void configure(HttpSecurity http) throws Exception {
http
.antMatcher("/**").authorizeRequests()
.antMatchers("/").permitAll()
.anyRequest().authenticated();

http
.oauth2Login();
}
}

어플리케이션 실행

설정을 완료한 후 어플리케이션을 실행한 다음 localhost:8080/restricted 로 이동하면 아래와 같은 Google OAuth2인증 페이지로 이동하게 된다.

Share