-
Session과 Token공부방 2023. 10. 20. 17:10
인증과 인가
인증과 인가는 비슷해 보이는 단어이지만 그 의미가 다르다.
먼저 인증(Authentication)은 쉽게 로그인이라고 생각하면 된다. 아이디와 비밀번호를 통해 내가 사용자임을 인증받는다.
인가(Authorization)는 인증을 받은 후, 내가 로그인 되어있음을 알아보고 내 친구목록 보기, 댓글 달기 등을 허가해주는 것을 말한다.
Session과 Token
세션과 토큰 모두 인가와 관련된 기술이다. 서버에서 요청한 사용자가 로그인 해 있다는 사실을 인지하기 위한 기술이다.
Session
세션의 경우 서버에서 별도의 세션 저장소에 유저 정보를 저장하고 있는 것이다.
사용자가 로그인 할 경우 세션을 생성하여 저장하고 해당 세션의 ID를 쿠키로 주고 받아 해당 유저 정보를 알아오는 방식이다.
출처. hongong.hanbit.co.kr 세션 방식은 공유되는 세션 아이디 자체는 의미없는 정보이기에 탈취당해도 큰 문제가 없다는 장점이 있다.
하지만 이 세션이라는것을 별도로 서버에 저장해야 하기 때문에 유저 수에따라 추가적인 저장공간이 필요하다는 단점이 존재한다. 또, 여러 서버로 분산 처리 되는 경우 모든 서버에 해당 세션 정보를 동기화해주어야하는 작업이 추가로 필요하다는 점도 있다.
Token
토큰 기반 인증방식이라 하면 주로 JWT(JSON Web Token) 방식을 사용한다. 사용자가 로그인을 하면 서버에서는 토큰을 발급하여 응답을 내려준다. 이때 이 토큰에 대한 정보를 서버에 별도로 저장하지는 않는다. 다음에 유저가 이 토큰과 함께 요청을 한다면 해당 토큰이 자신이 발급한 토큰이 맞는지, 변조되진 않았는지 등을 확인하고 인가해준다.
출처. hongong.hanbit.co.kr JWT 방식은 크게 header, payload, verify signature 3부분으로 나뉜다. 토큰 방식은 로그인한 유저에 대한 정보를 별도로 서버에 저장하는게 아니라 토큰의 payload에 넣어서 발급하게 된다. 이 JWT 토큰이란것은 누구나 복호화 해서 볼 수 있는데 이때문에 payload에 민감한 사용자 정보를 넣어서는 안된다.
누구나 볼 수 있다면 반대로 생각해보면 내부 내용을 바꿔서 요청을 보내도 되지 않을까? 라는 생각도 들기 마련인데, verify signature 로 해당 부분을 검증할 수 있다. JWT 토큰을 만들때 암호화 알고리즘을 정하고 서버에 비밀 키 값을 둔 다음 이 정보들을 이용해서 header와 payload를 암호화한 값이 signature인데 사용자가 임의로 payload값을 변경한다면 이 signature값이 달라져 검증할 수 있다.
토큰 방식은 세션 방식과 다르게 별도의 저장 공간을 필요로하지 않는다. 또, 여러 서버에 분산되는 환경이라해도 토큰 방식은 크게 문제 되지 않는다. 하지만 토큰 길이 자체가 길어 네트워크에 부하가 있을 수 있고, 토큰 payload를 누구나 볼 수 있기에 민감한 정보를 담지 못한다. 또 토큰 자체가 탈취되면 문제가 있을 수 있다.
정리
토큰 방식이 세션방식의 상위호환같은 존재는 아니다. 서로의 방식의 차이점이 있을 뿐이다.
세션방법처럼 stateful하게 구현한다면 서버에서 이 유저의 정보를 갖고있기에 마찬가지로 제어도 가능하다. 예를 들어 한 유저가 pc에서도 접속하고 모바일에서도 접속할때 둘중 하나에대한 세션을 끊어버릴 수도 있다.
따라서 세션 방식과 토큰 방식을 서비스에따라 적절히 쓰는것이 필요해 보인다.
참고
완벽 정리! 쿠키, 세션, 토큰, 캐시 그리고 CDN
웹 서핑을 하면서 어떤 사이트에 들어가면 쿠키를 설정하라는 문구를 본 적이 있을 거예요. 이 쿠키 때문에 쇼핑 사이트에 로그인하지 않아도 장바구니에 물건을 담아두거나 검색 기록에서 이
hongong.hanbit.co.kr
https://tofusand-dev.tistory.com/89
Cookie, Session, Token 의 차이점
Cookie, Session, Token 의 차이점 Cookie, Session, Token 의 차이점 계정 정보를 요청 Header 에 넣는 방식 Session / Cookie 방식 인증 절차 Session 과 Cookie 의 차이점 장단점 Token 기반 인증 방식 JWT Token 인증절차
tofusand-dev.tistory.com
https://www.youtube.com/watch?v=1QiOXWEbqYQ
'공부방' 카테고리의 다른 글
HTTPS 통신 과정 (0) 2023.11.15 OSI 7계층과 TCP/IP 4계층 (0) 2023.11.07 부동소수점 표현 방식 [IEEE 754] (0) 2023.08.31 스프링과 디자인 패턴 (0) 2023.08.27 CAP Theorem (0) 2023.08.06