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 |