Spring Security란 무엇인가

| 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