반응형
세션 : 서버가 클라이언트와 상호작용을 유지하기 위해 서버 내 클라이언트의 상태 정보를 저장하는 방식
- 매장 점원이 얼굴을 기억하는 것
- 인증이 된 사용자라는 것을 세션id를 생성하여 저장한다.
- 이 세션 id를 클라이언트에 보냄
- 클라이언트는 이 세션 id를 인가가 필요한 요청에서 같이 보낸다.
토큰 : 사용자 인증에 대한 정보가 담긴 징표
- JWT (Json Web Token) : xxxx.yyyyy.zzzzz
- Header, Payload, Signature
- Header : 토큰의 유형과 서명에 사용된 암호화 알고리즘에 대한 정보를 포함
- Payload : 사용자정보 혹은 토큰 정보를 나타내는 클레임을 포함한다. (발행시간 등)
- Signature : 토큰의 무결성 보장, 변조 방지 (secret key)
- 서버가 토큰을 발행하여 클라이언트에게 전달
- 클라이언트는 인가가 필요한 요청에 토큰을 함께 보냄
- 서버는 토큰을 비밀키로 변조 여부를 확인하고 인가절차를 밟는다.
세션 vs 토큰
1. 확장성
- 세션은 확장에 있어서 불리한 구조임. 확장 시 추가적인 조치가 필요함
- 토큰의 경우, 서버가 모두 동일한 시크릿키를 갖고 있어서 확장에 있어서 더 유리한 구조이다.
2. 보안성
- 탈취된 세션 ID를 서버 측에서 삭제하여 무효화할 수 있음
- 탈취된 토큰을 통해 해커는 접근할 수 있다.
- 세션이 토큰보다 보안성 측면에서 더 유리하다.
반응형
'Computer Science' 카테고리의 다른 글
[자료구조] 자바스크립트로 우선순위 큐(Priority Queue) 구현하기 (0) | 2024.03.09 |
---|---|
[CS] REST API의 Code On Demand 원칙이 필수가 아닌 이유는 무엇일까? (0) | 2024.01.12 |
[알고리즘] 최적 부분 구조 (0) | 2023.06.25 |