[Spring Security] Spring Security 란? + 용어 정리
✨ Section 3에서 만들었던 샘플 애플리케이션에 없는 요소들 :
- 인증(Authentication) 기능
: 로그인 기능
- 인가(Authorization) 기능
: API 대한 권한 부여 기능
- 웹 보안 취약점 대비
Spring Security 란?
: Spring MVC 기반 애플리케이션의 인증(Authentication), 인가(Authorization) 기능을 지원하는 보안 표준 프레임워크
Spring Security로 할 수 있는 보안 강화 기능
- 다양한 유형의 사용자 인증 기능 적용
ex) 폼 로그인 인증, 토큰 기반 인증, OAuth 2 기반 인증, LDAP 인증 - 애플리케이션 사용자의 역할(Role)에 따른 권한 레벨 적용
- 애플리케이션에서 제공하는 리소스에 대한 접근 제어
- 민감한 정보에 대한 데이터 암호화
- SSL 적용
- 일반적으로 알려진 웹 보안 공격 차단
- SSO, 클라이언트 인증서 기반 인증, 메서드 보안, 접근 제어 목록 ...
Spring Security 를 사용해야 하는 이유
: 보안 강화 솔루션으로 Spring Security 만 한게 없다!
직접 보안 솔루션을 개발해서 쓰는 것보다
잘 만들어진 Spring Security 를 사용하는 것이 훨씬 쉬움!
Spring Security 의 기본 옵션 - 대부분의 보안 요구 사항을 만족 시킬 수 있다.
특정 보안 요구 사항? - 커스터마이징 해서 사용!
Spring Security 용어 정리 (보안 영역 개념)
1) Principal = 주체
: 인증 프로세스가 성공적으로 수행된 사용자의 계정 정보
애플리케이션에서 작업 수행 가능한 사용자, 디바이스, 시스템
2) Authentication = 인증
: 애플리케이션 사용자가 본인이 맞음을 증명하는 절차
Authentication 수행 위해 Credential 이 필요하다.
* Credential = 신원 증명 정보 (사용자 식별 정보) ex) 패스워드
3) Authorization = 인가, 권한 부여
: Authentication 이 정상적으로 수행된 사용자에게, 하나 이상의 권한(authority)을 부여!
그 권한으로 특정 애플리케이션의 특정 리소스에 접근할 수 있게 허가하는 과정
반드시 Authentication 이후에 수행된다!
일반적으로 역할(Role : user, admin..) 형태로 부여됨
4) Access Control = 접근 제어
: 사용자가 애플리케이션의 리소스에 접근하는 행위를 제어하는 것