| Spring Security란?
애플리케이션의 인증, 인가, 공격 보호(protection agaist common attatcks)의 보안 기능을 제공하는 framework
인증(Authentication)
- 사용자가 누구인지 확인하는 단계
ex) 로그인 - DB에 등록된 아이디와 패스워드를 사용자가 입력한 아이디와 비밀번호의 일치 여부 확인하는 과정
인가(Authorization)
- 인증을 통해 검증된 사용자가 애플리케이션 내부의 리소스에 접근할 때 접근할 권리가 있는지 확인하는 과정
- 일반적으로 사용자가 인증 단계에서 발급받은 토큰은 인가 내용을 포함하고 있음.
ex) 게시판 접근 등급 확인해 접근을 허가하거나 거부
| 왜 사용하는가?
1. 모든 URL에 대해서 인증을 요구한다.
- interceptor를 사용하게 되면 인증에 관한 것들을 내가 구현해야 함.
- spring security는 기본으로 제공
2. 로그인 폼을 생성, 로그아웃 기능 제공
- build.gradle 혹은 pom.xml에 의존성만 추가해도 바로 로그인폼과, 로그아웃 기능이 생성됨.
3. 기초적인 폼에 대해서 사용자 이름과 비밀번호를 요구한다.
- build.gradle 혹은 pom.xml에 의존성 추가 후 프로젝트 실행 시 생성된 비밀번호를 로그에 보여줌.
4. CSRF(Cross Site Request Forgery) 공격을 방어한다.
- CSRF란 사이트 간 위조 요청을 의미함.
- A라는 도메인에서는 사용자가 일반 유저인지 악용된 공격인지 구분할 수가 없음.
- 따라서 GET을 제외한 Create, Update, Delete는 CSRF 토큰이 있어야 요청을 받아들여줌.
- spring security에서는 CSRF protection이 default로 설정 되어있음.
- 그런데 만약 JWT라는 토큰을 사용할 거라면 CSRF protection이 필요 없음 => csrf.disable()
이라는 코드만 추가하면 됨.
5. Session Fixsation을 방어한다.
6. 요청 헤드 보안
7. Servlet API 제공
'Spring Boot' 카테고리의 다른 글
[CORS 02] CORS 설정 | CorsConfig (0) | 2023.07.26 |
---|---|
[CORS 01] CORS 기본 동작 과정 (0) | 2023.07.26 |
[CORS 00] CORS, 왜 필요할까? (0) | 2023.07.26 |
[Spring Security 02] SecurityConfig.java (0) | 2023.02.28 |