Spring
Spring Boot 구글 OAuth2 로그인 구현 방법(spring-securify-oauth2)
randev
2023. 2. 16. 14:04
Spring을 사용하여 Google에 로그인하려면 Google 인증을 위한 OAuth2 프로토콜 구현을 제공하는 Spring Social Google 라이브러리를 사용할 수 있습니다.
먼저 Spring Security OAuth2 클라이언트와 Google 라이브러리를 pom.xml에 종속성으로 추가해야 합니다
<dependency>
<groupId>org.springframework.security.oauth.boot</groupId>
<artifactId>spring-security-oauth2-autoconfigure</artifactId>
<version>2.5.4</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.security.oauth</groupId>
<artifactId>spring-security-oauth2</artifactId>
<version>2.5.4</version>
</dependency>
<dependency>
<groupId>org.springframework.social</groupId>
<artifactId>spring-social-google</artifactId>
<version>1.0.0.RELEASE</version>
</dependency>
이 예에서는 먼저 아래와 같이 application.yml 파일에 Google 클라이언트 ID와 클라이언트 암호를 작성해두어야합니다.
spring:
security:
oauth2:
client:
registration:
google:
client-id: <your-client-id>
client-secret: <your-client-secret>
scope:
- email
- profile
provider:
google:
authorization-uri: https://accounts.google.com/o/oauth2/v2/auth
token-uri: https://www.googleapis.com/oauth2/v4/token
user-info-uri: https://www.googleapis.com/oauth2/v3/userinfo
user-name-attribute: sub
그런 다음 로그인 흐름을 처리하기 위한 새 컨트롤러를 생성합니다
@Controller
public class LoginController {
@GetMapping("/login")
public String login() {
return "login";
}
}
이 예에서 login() 메서드는 "Login with Google" 단추를 표시하는 Thymelleaf 템플릿(login.html)의 이름을 반환합니다.
마지막으로 Google 공급자를 사용하도록 Spring Security를 구성해야 합니다. SecurityConfig.java에 다음 구성을 추가합니다:
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers("/", "/login**")
.permitAll()
.anyRequest()
.authenticated()
.and()
.oauth2Login()
.loginPage("/login")
.defaultSuccessURL("/home")
.userInfoEndpoint()
.userService(googleUserService());
}
private OAuth2UserService<OAuth2UserRequest, OAuth2User> googleUserService() {
return new GoogleOAuth2UserService();
}
}
이 예에서 configure() 메서드는 인증되지 않은 액세스를 허용하도록 Spring Security를 구성합니다. 그리고 루트 페이지(/) 및 로그인 페이지(/login)에 인증을 적용합니다. 마지막으로 기본 성공 URL(/home) 및 Google을 지정하여 OAuth2 로그인 흐름을 설정합니다
이러한 구성을 사용하면 이제 사용자가 Google 자격 증명을 사용하여 응용 프로그램에 로그인할 수 있습니다.