일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- GraphQL
- 자료구조
- 프로그래머스
- REST API
- 인접행렬
- css
- TIL
- javascript
- OOP
- 탐욕법
- puppeteer
- Spring
- LifeCycle
- JWT
- html
- 알고리즘
- Interceptor
- java
- node.js
- bean
- 코딩테스트
- MySQL
- nestjs
- Kubernetes
- Linux
- winston
- 인접리스트
- typescript
- dfs
- Deep Dive
- Today
- Total
목록CS/인증 및 인가 (3)
처음부터 차근차근

JWT에도 한계점은 있다? 쿠키와 서버의 단점을 보완해주는 JWT에서도 크나큰 단점이 존재합니다. 바로 토큰이 탈취당하면 만료될 때까지 대처가 불가능하다. 세션은 탈취당한다고 판단이 되었을 때 세션 저장소를 끊어서 탈취당한 세션 ID가 있더라도 세션 저장소에 그 값을 지워 탈취된 후의 상황을 보완할 수 있었습니다. 그러나 이건 서버에서 클라이언트의 상태를 저장하는 Stateful한 상황이고, 토큰은 Stateless 상태입니다. 즉, 토큰을 발급하면 관리는 클라이언트에서 하기 때문에, 탈취를 당했다고 서버에서 판단할 수가 없습니다.(탈취 당하면 답이 없는 상태) 만료시간을 짧게 가져가자 JWT는 발급한 후 서버에서 삭제가 불가능하기 때문에, 접근에 관여하는 토큰에 유효시간을 부여하는 식으로 탈취 문제에 ..

JWT란? JWT(JSON Web Token)이란 인증에 필요한 정보들을 암호화시킨 JSON 토큰을 의미합니다. 그리고 JWT 기반 인증은 JWT 토큰을 HTTP 헤더에 실어 서버가 클라이언트 식별하는 방식을 의미합니다. JWT는 JSON 데이터를 Base64 URL-safe Encode를 통해 인코딩하여 직렬화한 것을 의미합니다. 사실 기본적으로 인증하는 방식은 일반 Token 방식과 크게 다르지 않습니다. 다만 이 토큰 내부에는 위변조 방지를 위해 개인키를 통한 전자서명도 들어가 있습니다. 따라서 사용자가 JWT를 서버로 전송하면 서버는 성명을 검증하는 과정을 거치게 되며, 완료되면 요청한 응답을 돌려줍니다. Base64 URL-safe Encode 는 일반적인 Base64 Encode 에서 URL ..

서버가 클라이언트 인증을 확인하는 방식으로는 대표적으로 쿠키, 세션 토큰 3가지 방식이 존재합니다. 이번 포스팅은 쿠키 세션, 토큰이을 만든 이유, 인증 방식에 대해서 알아보겠습니다. HTTP의 특징과 쿠키, 세션을 사용하는 이유 쿠키, 세션, 토큰 등을 사용해 클라이언트 인증을 확인하는 이유는, HTTP 프로토콜의 특성이자 약점인 Connectionless, stateless한 특성을 보완하는 이유입니다. 기본적으로 HTTP는 Connectionless와 stateless한 특성을 가지고 있습니다. Connectionless : 클라이언트가 요청을 한 후 응답을 받으면 그 연결을 끊어버리는 특징 헤더에 keep-alive라는 값을 줘서 Connection을 재활용하는데, HTTP 1.1에서는 이것이 D..