- 학습한 내용
- Cookie
- Session
- Token
- JWT
- Filter
- Cookie
- 주로 사용자 세션 관리(로그인, 장바구니, 접속시간)나 광고 트래킹(사용자 행동) 등의 목적으로 사용.
- 웹 브라우저에 저장되는 데이터
- Cookie에 담겨있는 값으로 인증/인가 를 진행한다.
- 서버가 클라이언트의 상태를 기억하도록 도와준다.
- 로그인 상태 유지 등에 활용된다.
- 보안에 취약하다
- 민감한 정보를 저장하지 않아야한다.
- 사용자 임의 수정이 가능하다.
- Session
- 서버에서 중요한 정보를 보관하며 로그인을 유지하는 방법
- SessionId를 탈취하여도 민감한 정보는 없다.
- 만료 시간을 설정해서 탈취 문제를 최소화한다.
- HttpSession은 최근 Session을 요청한 시간을 기준으로 만료 시간을 유지한다.
- 동작 순서
- 서버에서 중요한 정보를 보관하며 로그인을 유지하는 방법
- Token
- 인증/인가 과정에서 사용되며 사용자 또는 시스템의 신원과 권한을 증명하고 요청의 유효성을 검증하는데 사용되는 디지털 문자열
- Session과는 다르게 Client가 데이터(Token)를 저장하고 있다.
- Stateless를 기반으로 하여 확장성이 뛰어나다.
- Mobile과 같이 Cookie를 사용할 수 없는 경우에도 사용할 수 있다.
- Payload는 암호화되지 않는다.
- 만료 시간으로 Token 탈취를 대비한다.
- 단점
- Cookie/Session 방식보다 Token 자체의 데이터 용량이 많다.
- 요청이 많아지면 그만큼 트래픽이 증가.
- Payload는 암호화되지 않아서 중요한 데이터를 담을 수 없다.
- Token을 탈취당하면 대처하기 어려워 만료 시간을 설정한다.
- Cookie/Session 방식보다 Token 자체의 데이터 용량이 많다.
- JWT
- 인증에 필요한 정보들을 암호화시킨 JSON 형태의 Token
- Signature를 통해 Token을 안전하게 관리한다.
- JWT의 목적은 정보 보호가 아닌, 위조 방지에 있다.
- 장점
- 서버의 수평 확장성이 높아진다.
- DB를 조회하지 않아도 된다.
- Cookie가 없는 다른 환경에서도 인증/인가를 적용할 수 있다.
- 단점
- 민감한 정보를 다루지 못한다.
- Token의 길이가 길어서 트래픽이 증가하면 네트워크에 부하가 증가한다.
- 클라이언트 측에서 Token을 관리하기 때문에 탈취당하면 대처하기 어렵다.
- Filter
- 공통 관심 사항을 하나의 입구에서 처리할 수 있게 만들어준다.
- 핵심 기능
- 비지니스 로직
- 부가 기능
- 주요 메서드
- init()
- 초기화하는 메서드
- doFilter()
- Client에서 요청이 올 때 마다 doFilter() 메서드가 호출.
- 내부에 필터 로직을 구현하면 된다.
- WAS에서 doFilter()를 호출해주고 하나의 필터의 doFilter()가 통과된다면 Chain에 따라 순서대로 호출
- 더 이상 호출할 Filter가 없으면 Servlet이 호출횐다.
- Client에서 요청이 올 때 마다 doFilter() 메서드가 호출.
- destroy()
- init()
'TIL > Spring' 카테고리의 다른 글
TIL 2024-11-26 (Spring 심화) (0) | 2024.11.26 |
---|---|
TIL 2024-11-18 (Cookie/Session) (0) | 2024.11.18 |
TIL 2024-11-12 (Spring 숙련 - 1주차) (0) | 2024.11.12 |
TIL 2024-11-07 (Spring 입문 - 응답 데이터) (1) | 2024.11.07 |
TIL 2024-11-06 (Spring 입문 - 요청 데이터) (0) | 2024.11.06 |