JWT란 무엇인가??

omnigi·2022년 3월 30일
0

백엔드

목록 보기
6/8

회원인증 서비스를 구현하려다 보니 JWT라는것을 알게되었어요!

JWT는 JSON Web Token 의 약자로, 데이터가 JSON으로 이루어져 있는 토큰입니다.(두 개체가 서로 안전하게 정보를 주고받을 수 있도록 웹 표준으로 정의된 기술이라고 합니다)

세션 기반 인증과 토큰 기반 인증의 차이

사용자의 로그인 상태를 서버에서 처리하는데 사용할 수 있는 대표적인 두 가지 인증 방식이 있습니다.
하나는 세션을 기반으로 인증하는 것이고, 다른 하나는 토큰을 기반으로 인증하는 것입니다.

세션(session)기반 인증시스템

서버가 사용자가 로그인 중임을 기억하고 있다는 뜻입니다

세션 기반 인증시스템 순서
사용자가 로그인을 하면, 서버는 세션 저장소에 사용자 정보를 조회하고 세션 id를 발급합니다(주로 브라우저의 쿠키에 저장).
이후 사용자가 다른 요청을 보낼때 마다 서버는 세션 저장소에서 세션을 조회한 후 로그인 여부를 결정하여 작업을 처리하고 응답을 합니다.
세션저장소는 주로 메모리, 디스크, DB등을 사용합니다.

세션 기반 인증의 단점

  1. 서버를 확장하기가 번거로워질 수 있다.
  2. 서버가 확장되면 모든서버끼리 같은 세션을 공유해야하여 세션전용 DB를 만들어야 할 수도 있습니다.

    잘 설계한다면 충분히 좋은 시스템이 될 수 있습니다.
    그냥 귀찮다는 뜻 ㅋㅋㅋㅋ

토큰 기반 인증 시스템

토큰은 로그인 이후 서버가 만들어주는 문자열 입니다.
해당 문자열 안에는 사용자의 로그인 정보가 들어 있고, 해당 정보가 서버에서 발급되었음을 증명하는 서명이 들어있습니다.

서명 데이터는 주로 HMAC SHA256, RSA SHA256 두가지 알고리즘 중 한가지가 사용됩니다.

서버에서 만들어준 토큰은 서명이 있기 때문에 무결성이 보장됩니다.
무결성이란 정보가 변경되거나 위조되지 않았음을 의미하는 성질입니다

토큰 기반 인증 시스템의 장점

사용자 쪽에서 로그인 상태를 지닌 토큰을 가지고 있으므로 서버의 확장성이 매우 높습니다.
서버가 여러개로 늘어나도 서버끼리 사용자의 로그인 상태를 공유할 필요가 없다!

한줄 정리

세션기반 인증시스템 : 사용자가 작업을 할때마다 서버뿐 아니라 세션저장소까지 한번더 작업을 거쳐야함
토큰기반 인증 시스템 : 사용자가 서버의 인증을 받은 토큰을 보관하고 있어서 작업이 간편함

0개의 댓글