Spring Security 설정 설명 메모(OAuth 2)

SecurityConfig 패키지 만들기



자신은 다음 패키지에 만들었습니다.


SecurityConfig 코드



package jojoidu.boot.springboot.config.auth;

import jojoidu.boot.springboot.domain.user.Role;
import lombok.RequiredArgsConstructor;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;

@RequiredArgsConstructor
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    private final CustomOAuth2UserService customOAuth2UserService;

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
                .csrf().disable()
                .headers().frameOptions().disable()
                .and()
                    .authorizeRequests()
                    .antMatchers("/", "/css/**", "/images/**", "/js/**", "/h2-console/**", "/profile").permitAll()
                    .antMatchers("/api/v1/**").hasRole(Role.USER.name())
                    .anyRequest().authenticated()
                .and()
                    .logout()
                        .logoutSuccessUrl("/")
                .and()
                    .oauth2Login()
                        .userInfoEndpoint()
                            .userService(customOAuth2UserService);
    }
}


@EnableWebSecurity


  • Spring Security 설정을 활성화하기 위해서 사용합니다.

  • csrf().disable().headers().frameOptions().disable()


  • h2-console 화면을 사용하기 위해 해당 옵션을 비활성화합니다.
    (개인 프로젝트 H2 데이터베이스를 사용하고 있기 때문에.)

  • authorizeRequests()


  • URL 별 권한 관리 설정 옵션은 "authorizeRequests()"로 시작합니다.
  • authorizeRequests 를 선언하고 나서 antMatchers() 를 사용할 수 있습니다.

  • antMatchers()


  • 권한 관리 대상을 지정하는 옵션입니다.
  • URL, HTTP 메소드 마다 관리가 가능합니다.
  • "/"등 지정된 URL은 「permitAll()」옵션을 사용해 전체 관람 권한을 주었습니다.
  • "/api/v1/**"주소가 있는 API가 USER 권한을 가진 사용자만 호출할 수 있도록 설정했습니다.

  • anyRequest()


  • 설정된 값 이외의 URL을 나타냅니다.
  • 이번에는 「authenticated()」를 추가해 나머지 URL에 대해서는 모두 인증 유저만 허가합니다.

  • 인증 사용자는 즉 로그인된 사용자입니다.

  • logout().logoutSuccessUrl("/")


  • 로그아웃 기능에 관해서 다양한 설정을 합니다.
  • 로그아웃 성공 시 "/"(TOP)로 전환합니다.

  • oauth2Login()


  • Oauth 2 로그인 기능과 관련된 설정을 수행합니다. (시작)

  • userInfoEndpoint()


  • Oauth 2 로그인 성공 후 사용자 정보를 가져올 때 설정합니다.

  • userService (customOAuth2UserService)


  • 소셜 로그인 성공 후 실행할 UserService Interface를 상속하는 클래스를 등록합니다.
  • 
    @RequiredArgsConstructor
    @Service
    public class CustomOAuth2UserService implements OAuth2UserService<OAuth2UserRequest, OAuth2User> {
    }
    
  • 리소스 서버(소셜 서비스)에서 사용자 정보를 가져온 상태에서 추가 처리 기능을 설명할 수 있습니다. (UserService Interface를 상속하는 클래스 내에서)



  • 이번에는 OAuth2의 Springboot2의 security 설정을 실시했습니다만,
    정리하면서 다시 공부가 되었습니다.
    내용은 메모라는 느낌이므로 자세한 정보 등은 DOC와 다른 블로그를 참고로하는 것이 좋을까 생각합니다.

    좋은 웹페이지 즐겨찾기