일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- AWS RDS
- 자바
- 인덱스
- 자바예외
- 네트워크
- DDD
- 인프런김영한
- 클린코드
- AWS
- react
- jpa
- 기술면접
- 혼공SQL
- 인프런백기선
- 이팩티브 자바
- 이펙티브 자바
- 알고리즘
- vue.js
- 도메인 주도 개발 시작하기
- 자료구조
- CleanCode
- mysql
- java
- 이펙티브자바
- aop
- 스프링부트와AWS로혼자구현하는웹서비스
- SQL쿡북
- 알고리즘분석
- MariaDB
- 자바스터디
- Today
- Total
기록이 힘이다.
[기술면접] 토큰(token)과 Session 로그인 본문
https://fierycoding.tistory.com/69
[인증/인가]Session(세션)과 Token(토큰)(JWT)의 차이점
바로 직전의 통신도 기억 못하는 HTTP HTTP는 stateless한 특성을 가지기 때문에 각 통신의 상태는 저장되지 않습니다. 하지만 우리가 웹 서비스를 사용할 때를 생각해봅시다. 매번 새 페이지를 요청
fierycoding.tistory.com
세션과 토큰 모두 존재 목적은 거의 같지만 차이점은 존재합니다.
그 중 가장 큰 차이점은 세션은 데이터베이스 서버에 저장된다는 것,
토큰은 클라이언트 측에서만 저장한다는 점입니다.
차이점 1. 사이즈
세션 < 토큰
차이점 2. 안전성
세션
세션은 서버측에서 저장/관리하기 때문에 상대적으로 온전한 상태를 유지하기 유리합니다.
하지만 여전히 공격의 위험이 있기에 유효기간, HttpOnly, Secure 옵션 등을 주어 쿠키에 저장합니다.
토큰
반대로 토큰은 웹 브라우저측 (local storage, 혹은 쿠키 등)에 저장되기 때문에 공격에 노출될 가능성이 더 큽니다.
이런 경우를 대비해 토큰에는 민감한 정보를 담지 않습니다.
그리고 유효기간을 짧게 설정해 공격에 노출될 수 있는 시간을 최소화합니다.
하지만 짧은 주기로 토큰이 무효화되면 서비스 사용자는 계속 로그인을 해줘야 하는 번거로움이 있기 때문에
애초에 로그인(인증)시 refresh token이라는 것을 추가적으로 발급합니다.
refresh token은 좀 더 긴 유효기간을 가졌으며 최대한 안전한 곳에 저장됩니다.
기존의 토큰이 만료되거나 변질되면 refresh token을 통해 토큰을 재발급합니다.
차이점 3. 확장성
최근 대부분의 웹 서비스가 토큰 방식을 선택하게 된 이유가 바로 확장성에 있습니다.
세션은 서버에 저장되기 때문에 한꺼번에 다중 접속자가 발생한다면 과부하가 걸릴 수 있습니다.
그럼 과부하를 덜어주기 위해 서버를 여러 대를 두면 되겠죠?
하지만 또 서버가 여러대라면 세션을 쓰기가 복잡해집니다.
'일상생각기록' 카테고리의 다른 글
자바스터디 [이펙티브 자바] (0) | 2023.04.08 |
---|---|
[기술면접] 싱글톤 패턴 (0) | 2023.03.04 |
내가 개발을 시작한 이유 (0) | 2022.06.20 |