기타

Token / Cache

위르겐 2023. 1. 29. 19:01

https://jurgen-94.tistory.com/96

 

Cookie / Session

프로그래밍을 시작하면서 지금까지 쿠키, 세션, 캐시, 토큰에 대한 개념이 정확히 안잡혀있어서 '언젠간 정확히 공부해봐야지' 라고 생각만했고 그 때 그 때 필요한 정보들만 받아들였다는 생각

jurgen-94.tistory.com

 

지난 글에 이어

토큰과 캐시까지 자세히 알아보자!

 

토큰 (Token)

  • 토큰이란 인증을 위해 사용되는 암호화된 문자열이다.
  • 사용자가 인증에 성공하면 서버는 토큰을 생성해서 클라이언트로 보낸다.
  • 토큰도 세션과 마찬가지로 사용자가 보내는 요청에 포함된다.
  • 세션 인증에 비해 서버 운영의 효율이 더 좋다.

 

세션과는 또 다른 로그인 유지 방식이다.

서버는 요청마다 함께 오는 세션 아이디를 바로바로 확인할 수 있도록 

로그인한 사용자의 아이디를 메모리에 저장해 두는데 그 공간이 한정적이다.

 

메모리 공간을 많이 차지하는 세션 방식의 대안은 로그인한 사용자에게 

세션 아이디 대신 토큰을 발급해 주는 것이다.

 

 

토큰 동작 방식

다음은 토큰 기반 인증의 방법 중 가장 대표적인 JWT(JSON WEB TOKEN)의 동작 방식에 대해 알아보자

 

 

1. 사용자가 로그인을 하면 회원 정보가 들어있는  데이터베이스에서 정말로 회원인지 확인을 한다.

2. 정상확인 될 경우에 서버에서 구현된 알고리즘으로 access token을 발급해 클라이언트에 응답으로 내려준다.

3. 사용자는 그 토큰을 받아 웹스토리지에 저장하고 http요청을 보낼 때마다 토큰을 요청헤더에 담아 같이 보내준다.

4. 서버는 그 토큰을 검증한 후 응답한다.  

이미지 출처 : https://velog.io/@hahan/JWT%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80

 

 

토큰의 단점

1. 쿠키 / 세션과 다르게 JWT는 토큰의 길이가 길어, 인증 요청이 많아질수록 네트워크 부하가 심해진다.

2. 토큰을 탈취당하면 대처하기 어렵다.

3. 특정 사용자의 접속을 서버에서 강제로 만료하기 어렵다.

 

이러한 단점을 리프레시 토큰으로 어느정도 해소할 수 있는 것 같은데 

그 부분은 따로 포스팅 예정이다!

 

 

 

캐시 (Cache)

 

캐시는 리소스 파일들의 임시 저장소이다.

같은 웹 페이지에 접속할 때 사용자의 PC에서 로드하므로 서버를 거치지 않아도 된다.

캐시는 데이터의 전송량을 줄이고 서비스의 이용 속도를 높이는데 목적을 두고 있다.

 

 

캐시 동작 방식

1. 데이터를 달라는 요청이 오면 먼저 캐시에서 데이터를 찾는다.

2. 캐시가 없거나(cache miss) 너무 오래되면(expiration) 원본 데이터가 저장된 곳에서 데이터를 조회한다.

이때 캐시에도 데이터를 복사하거나 갱신한다.

3. 캐시에 데이터가 있으면(cache hit) 캐시의 저장된 데이터를 제공한다.

4. 캐시는 용량이 작은 공간으로 사용하지 않거나 오래된 데이터는 삭제한다.(eviction)

 

 

 

 

 

이렇게 토큰 캐시 세션 쿠키에 대해서 알아봤다.

 

다른 분들이 정리해놓은 글을 참고한 부분이 굉장히 많았는데

아직 공부를 더 많이 해야될 듯하다.

 

 

 

참고

 

https://velog.io/@pu1etproof/네트워크-스터디-2주차-쿠키-세션-토큰-캐시

https://jminie.tistory.com/m/125

반응형

'기타' 카테고리의 다른 글

refresh-token rotation  (0) 2023.02.11
push 되어있는 커밋명 변경하기  (0) 2023.01.20
Cookie / Session  (0) 2023.01.17
SSR(Server Side Rendering)  (0) 2022.11.21
[CS] JWT (JSON Web Token)  (0) 2022.07.17