Computer Science

세션과 토큰

drk_4 2023. 10. 16. 16:04
반응형

세션 : 서버가 클라이언트와 상호작용을 유지하기 위해 서버 내 클라이언트의 상태 정보를 저장하는 방식

 

- 매장 점원이 얼굴을 기억하는 것

- 인증이 된 사용자라는 것을 세션id를 생성하여 저장한다. 

- 이 세션 id를 클라이언트에 보냄

- 클라이언트는 이 세션 id를 인가가 필요한 요청에서 같이 보낸다. 

 

 

토큰 : 사용자 인증에 대한 정보가 담긴 징표

 

- JWT (Json Web Token) : xxxx.yyyyy.zzzzz

- Header, Payload, Signature

- Header : 토큰의 유형과 서명에 사용된 암호화 알고리즘에 대한 정보를 포함

- Payload : 사용자정보 혹은 토큰 정보를 나타내는 클레임을 포함한다. (발행시간 등)

- Signature : 토큰의 무결성 보장, 변조 방지 (secret key)

 

- 서버가 토큰을 발행하여 클라이언트에게 전달

- 클라이언트는 인가가 필요한 요청에 토큰을 함께 보냄

- 서버는 토큰을 비밀키로 변조 여부를 확인하고 인가절차를 밟는다. 

 

세션 vs 토큰

 

1. 확장성 

- 세션은 확장에 있어서 불리한 구조임. 확장 시 추가적인 조치가 필요함

- 토큰의 경우, 서버가 모두 동일한 시크릿키를 갖고 있어서 확장에 있어서 더 유리한 구조이다. 

 

2. 보안성

- 탈취된 세션 ID를 서버 측에서 삭제하여 무효화할 수 있음

- 탈취된 토큰을 통해 해커는 접근할 수 있다. 

- 세션이 토큰보다 보안성 측면에서 더 유리하다. 

 

 

반응형