Spring Security는 Spring MVC 기반 애플리케이션의 인증(Authentication)과 인가(Authorization or 권한 부여) 기능을 지원하는 보안 프레임워크로써, Spring MVC 기반 애플리케이션에 보안을 적용하기 위한 사실상의 표준 프레임워크이다.
앞서 배웠듯 기본적인 웹 애플리케이션은 CRUD를 중심으로 돌아간다.
여기에 예외처리, 테스팅, API문서화 등을 적용해서 다양한 변수상황에 미리 대응하며
클라이언트(프론트엔드)측에 Rest API기반 요청법을 명시한다.
하지만, 여기에는 가장 중요한 보안이 빠져있다.
예를 들어 맨 먼저
1.클라이언트가 로그인을 하는 상황에서의 인증을 받고 처리하는 과정
2.그 후 리소스에 대한 권한 부여의 과정
3.마지막으로 CSRF, clickJaking, 세션 고정 공격 등의 웹 보안 취약점에 대한 대비 과정
이러한 기능들을 추상화시켜 적용할 수 있게 만들어주는 놈이 바로 Spring Security 보안
프레임워크이다.
다양한 유형(폼 로그인 인증, 토큰 기반 인증, OAuth 2 기반 인증, LDAP 인증)의 사용자 인증 기능 적용
애플리케이션 사용자의 역할(Role)에 따른 권한 레벨 적용
애플리케이션에서 제공하는 리소스에 대한 접근 제어
민감한 정보에 대한 데이터 암호화
SSL 적용
일반적으로 알려진 웹 보안 공격 차단
이 외에도 SSO, 클라이언트 인증서 기반 인증, 메서드 보안, 접근 제어 목록(Access Control List) 같은 보안을 위한 기능들을 지원한다.
위의 기능들을 밑바닥부터 구현하는 것은 매우 어렵다. 이런 상황에서 다양한 보안기능들이 추상캡슐화되어
나같은 일반개발자도 사용할 수 있게 해주는 것이 이 프레임워크이다.
또한 Spring security는 특정 보안 요구 사항을 만족하기 위한 커스터마이징이 용이하고, 유연한 확장이 가능하다.
위 두가지 이유로 Spring Security를 사용한다.
reference from CodeStates urclass