-
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 자격 증명을 사용하여 응용 프로그램에 로그인할 수 있습니다.'Spring' 카테고리의 다른 글
[Webflux] Reactor Hot And Cold Publisher (0) 2023.02.22 Spring IoC와 DI에 관하여 (0) 2023.02.20 Spring에서 Service class를 만들때 반드시 Interface를 구현해야할까 (0) 2020.02.28 Spring에서 DBMS별 mybatis LIKE문 사용법 (0) 2019.03.13 [Mybatis ] 클래스[ex)DTO] 를 새로 만들지 않고도 파라미터 2개 넘기는 방법 (0) 2019.03.12