위 영상을 보고 정리한 글입니다.
세션 vs 토큰 vs 쿠키
쿠키
- 쿠키를 이용해서 서버는 브라우저에 데이터를 넣을 수 있다.
- 사이트에 방문하면 브라우저는 서버에 요청을 보낸다.
- 서버는 응답에 요청하는데, 응답에는 모든 데이터와 찾는 페이지 정보가 있다.
- 브라우저에 쿠키를 저장한 뒤 해당 웹사이트에 방문할때마다 브라우저는 해당 쿠키도 요청과 함께 보낸다.
- 쿠키는 도메인에 따라 제한된다. 예를 들어 유튜브가 준 쿠키는 유튜브에만 보내진다.
- 서버가 정한 기간에 따라 유효기간이 존재한다.
- 쿠키는 인증뿐만 아니라 여러가지 정보를 저장할 수 있다.
세션
세션을 이용한 로그인과정
- 세션db는 요청한 유저에 따라 별도의 세션 id를 생성한다.
- 세션 id는 쿠키를 통해 브라우저로 들어오고 저장된다.
- 서버는 들어오는 쿠키를 보고 세션 id와 함께 오는 쿠키를 확인한다.
- 세션 id로 세션 db를 확인하여 해당 id의 유저명을 확인하면 서버는 유저를 확인할 수 있다.
stateless
stateless : 서버로 가는 모든 요청이 이전 리퀘스트와 독립적으로 다뤄진다. 요청끼리 연결이 없고, 메모리가 없다.
stateless는 서버에 요청을 할 때마다 누가 요청한 것인지 알려줘야 하기 때문에 세션을 사용한다.
세션의 장단점
- 장점
- 서버는 로그인 된 유저의 모든 정보를 저장하기 때문에 새로운 기능을 추가할 수 있다.
- 단점
- 로그인한 유저들의 모든 세션 id를 db에 저장해야 한다.
- db를 사고 유지해야 한다.
- 유저가 늘어나면 db도 커져야한다.
- 주로 redis 많이 사용함(빠르고 저렴)
토큰
세션 인증 방식은 인증요청이 들어올때마다 서버는 쿠키를 받아서 세션 id를 보고 세션 id와 일치하는 유저를 찾아야 다음 작업을 수행할 수 있다. 따라서 요청이 있을 때마다 db찾아야한다. 이를 해결하기 위해 jwt가 등장하게 되었다.
JWT 특징
- jwt는 토큰 형식이다.
- jwt로 유저인증을 하면 세션 db를 가질 필요가 없고 서버는 유저 인증한다고 많은 일을 하지 않아도 된다. 그저 정보를 사인하고 전달하기만 하면 된다.
- jwt는 쿠키와 다르게 공간 제약이 없어서 엄청 길어도 된다.
- jwt는 암호화 되지 않아서 누구나 볼 수 있으므로 비밀정보를 jwt안에 두면 안된다.
JWT를 이용한 로그인과정
- 유저를 인증하는데 필요한 정보를 토큰에 저장한다.
- 유저가 로그인하려면 토큰을 서버에 보내고, 서버는 사인이 유효한지 체크하거나 토큰이 조작되었는지 체크한다.
- 토큰이 유효하다면 서버는 유저로 인증한다.
JWT 장단점
- 장점
- db를 따로 살 필요가 없다.
- 단점
- 생성된 토큰 추적하지 않음
- 새로운 기능을 추가할 수 없다.
Uploaded by Notion2Tistory v1.1.0