스프링 시큐리티 공식 레퍼런스를 한글로 번역한 문서입니다.
전체 목차는 여기에 있습니다.
목차:
- 8.1. Updating Dependencies
- 8.2. Starting Hello Spring Security Boot
- 8.3. Spring Boot Auto Configuration
스프링 시큐리티는 표준 서블릿 필터로 서블릿 컨테이너와 통합된다. 서블릿 컨테이너에서 실행하는 모든 어플리케이션에서 동작한다는 뜻이기도 하다. 더 구체적으로 말하자면, 서블릿 기반 어플리케이션에서 스프링 시큐리티 때문에 굳이 스프링을 사용할 필요가 없다는 말이다.
이번 섹션에선 스프링 부트에서 스프링 시큐리티를 사용하기 위한 최소한의 설정을 다룬다.
완성된 어플리케이션 코드는 samples/boot/helloworld에서 찾아볼 수 있다. 좀 더 편리하게는, 여기를 클릭하면 최소 버전의 스프링 부트 + 스프링 시큐리티 어플리케이션을 다운로드할 수 있다.
8.1. Updating Dependencies
8.2. Starting Hello Spring Security Boot
이제 메이븐 플러그인의 run
goal로 스프링 부트 어플리케이션을 기동시킬 수 있다. 실행 방법은 다음을 참고하라 (실행 시 제일 앞에 출력되는 내용도 참고):
Example 46. Running Spring Boot Application
$ ./mvn spring-boot:run
...
INFO 23689 --- [ restartedMain] .s.s.UserDetailsServiceAutoConfiguration :
Using generated security password: 8e557245-73e2-4286-969a-ff57fe326336
...
8.3. Spring Boot Auto Configuration
스프링 부트는 다음과 같은 일을 자동으로 해준다:
- 스프링 시큐리티의 디폴트 설정을 활성화해서
springSecurityFilterChain
이라는 이름의 서블릿Filter
빈을 생성한다. 이 빈이 어플리케이션 내의 모든 보안 처리를 담당한다 (어플리케이션 URL 보호, 제출한 사용자 이름과 비밀번호 검증, 로그인 폼으로 리다이렉트 등). user
라는 사용자 이름과 콘솔에도 출력되는 랜덤 생성한 비밀번호를 가지고 있는UserDetailsService
빈을 만든다.- 서블릿 컨테이너에
springSecurityFilterChain
이란 이름의Filter
빈을 등록해 모든 요청에 적용한다.
스프링 부트 설정은 간단하지만 많은 일을 해준다. 기능을 요약하면 다음과 같다:
- 어플리케이션의 모든 상호작용에 사용자 인증 요구
- 디폴트 로그인 폼 생성
user
라는 이름과 콘솔에 출력한 비밀번호를 사용한 폼 기반 인증 지원 (위 예제에서 비밀번호는8e557245-73e2-4286-969a-ff57fe326336
이다).- BCrypt로 저장할 비밀번호 보호
- 사용자 로그아웃 지원
- CSRF 공격 방어
- Session Fixation 방어
- 보안 헤더 통합
- HTTP Strict Transport Security로 요청을 보호
- X-Content-Type-Options 통합
- Cache Control (어플리케이션에서 특정 스태틱 리소스에 캐시를 허용하도록 재정의할 수 있다)
- X-XSS-Protection 통합
- X-Frame-Options 통합으로 클릭재킹 방어 지원
- 서블릿 API 메소드 통합:
Next :Servlet Security, The Big Picture
스프링 시큐리티에서 사용하는 서블릿 필터를 설명합니다. 공식 문서에 있는 "servlet security, the big picture" 챕터를 한글로 번역한 문서입니다.
전체 목차는 여기에 있습니다.