🌿Spring Security
🔐보안(Security)
보안이 필요한 이유
- 인증(Authentication)
- 로그인 기능을 구현할 경우, 사용자의 인증 정보를 사용하여 자격을 증명하는 기능이 존재하지 않아 제 3자가 타인의 정보로 로그인을 행할 가능성이 있다.
- 인가(Authorization)
- API에 대한 권한 부여 기능이 없다면, 손님이 자기 입맛대로 커피 목록을 변경할 수 있음
- 외부 공격으로부터의 대응
🌿Spring Security란?
Spring MVC 기반 애플리케이션의 인증, 인가 기능을 지원하는 보안 프레임워크
직접 보안 기능을 구현할 수 있지만, 웹 애플리케이션 보안의 대한 대부분의 기능을 안정적으로 지원하고 구조적으로 잘 만들어 검증된 Spring Security 프레임워크를 사용하는 것이 안전하다.
Spring Security의 기능
- 다양한 유형의 사용자 인증 기능 적용
- 폼 로그인 인증, 토큰 기반 인증, OAuth2 기반 인증
- 애플리케이션 사용자의 역할에 따른 권한 레벨 적용
- 애플리케이션에서 제공하는 리소스에 대한 접근 제어
- 민감한 정보에 대한 데이터 암호화
- SSL 적용
- 일반적으로 알려진 웹 보안 공격 차단
Spring Security의 용어
Principal(주체)
- 애플리케이션에서 작업을 수행할 수 있는 사용자, 디바이스 또는 시스템 등이 될 수 있다.
- 인증 프로세스가 성공적으로 수행된 사용자의 계정 정보를 의미
Authentication(인증)
- 애플리케이션을 사용하는 사용자가 본인이 맞음을 증명하는 절차
- 해당 작업을 정상적으로 수행하기 위해서는
Credential(신원 증명 정보)
를 필요로 한다.
Credential(신원 증명 정보)
- 사용자를 식별하기 위한 정보로서
Authentication(인증)
과정을 정상적으로 수행하기 위해 필요한 정보를 말한다.
- ex. password
Authorization(인가 또는 권한 부여)
Authentication(인증)
이 정상적으로 수행된 사용자에게 하나 이상의 권한을 부여하여 특정 애플리케이션의 특정 리소스에 접근할 수 있게 허가하는 과정
- 반드시
Authentication(인증)
과정 이후에 수행되어야 하며, 권한은 일반적으로 역할 형태로 부여된다.
Access Control(접근 제어)
- 사용자가 애플리케이션의 리로스에 접근하는 행위를 제어하는 것