ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Spring Boot 구글 OAuth2 로그인 구현 방법(spring-securify-oauth2)
    Spring 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 자격 증명을 사용하여 응용 프로그램에 로그인할 수 있습니다.

     

    댓글

Designed by Tistory.