스프링 시큐리티 공식 레퍼런스를 한글로 번역한 문서입니다.
전체 목차는 여기에 있습니다.
목차:
- 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" 챕터를 한글로 번역한 문서입니다.
전체 목차는 여기에 있습니다.