본문 바로가기
SpringBoot/보안과 인증

Spring Security 기본 설정

by DEVLIB 2025. 4. 15.
728x90

Spring Security 기본 설정 가이드

1. 의존성 추가

build.gradle

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-security'
}

이 한 줄만 추가하면 기본 보안 설정이 자동 적용됩니다.


2. 기본 동작 확인

의존성을 추가하면:

  • 모든 요청은 기본적으로 인증 필요
  • /login 경로의 기본 로그인 폼 제공
  • 콘솔에 출력된 임시 사용자 비밀번호로 로그인 가능

예시

Using generated security password: 78d7c7f2-xxxx-4ff5-bd44-xxxxxx

 

기본 사용자: user
기본 비밀번호: 콘솔 출력값


3. 사용자 정의 보안 설정

SecurityConfig 클래스 생성

@Configuration
@EnableWebSecurity
public class SecurityConfig {

    @Bean
    public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
        http
            .authorizeHttpRequests((authz) -> authz
                .requestMatchers("/", "/home", "/css/**", "/js/**").permitAll()
                .anyRequest().authenticated()
            )
            .formLogin((form) -> form
                .loginPage("/login")        // 커스텀 로그인 페이지
                .defaultSuccessUrl("/welcome", true)
                .permitAll()
            )
            .logout((logout) -> logout
                .logoutSuccessUrl("/")
                .permitAll()
            );

        return http.build();
    }
}

4. 사용자 계정 등록

메모리 사용자 등록

@Bean
public UserDetailsService userDetailsService() {
    UserDetails user = User.withDefaultPasswordEncoder()
        .username("danbi")
        .password("1234")
        .roles("USER")
        .build();

    return new InMemoryUserDetailsManager(user);
}

실무에서는 보통 DB 기반 사용자 등록을 위해 UserDetailsService를 커스터마이징합니다.


권한(Role) 설정 예시

.authorizeHttpRequests((authz) -> authz
    .requestMatchers("/admin/**").hasRole("ADMIN")
    .requestMatchers("/user/**").hasAnyRole("USER", "ADMIN")
    .anyRequest().authenticated()
)

기본 로그인 페이지

  • http://localhost:8080/login
  • 사용자 이름/비밀번호 입력 후 로그인 가능
  • 로그아웃은 /logout URL로 가능

요약: Spring Security 자동 설정

항목 기본값
로그인 페이지 /login
기본 사용자 user
패스워드 콘솔에 자동 출력
인증 방식 Form 기반 인증
보안 적용 모든 경로에 적용됨 (커스터마이징 필요)

마무리 요약

항목 설명
spring-boot-starter-security 보안 기능 자동 설정
@EnableWebSecurity 사용자 보안 설정 적용
SecurityFilterChain 보안 경로/인증 방식 설정
UserDetailsService 사용자 정보 제공 클래스
커스터마이징 가능 로그인/로그아웃/권한 제어 등 자유롭게 구성 가능
LIST

'SpringBoot > 보안과 인증' 카테고리의 다른 글

OAuth2 로그인(Google, Kakao 등)  (0) 2025.04.15
JWT(Json Web Token) 인증  (0) 2025.04.15
로그인 & 회원가입 구현  (0) 2025.04.15