10-18 21:19
Notice
Recent Posts
Recent Comments
Link
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Archives
관리 메뉴

기록을 합시다.

세션 기반 인증과 토큰 기반 인증 본문

공부/etc

세션 기반 인증과 토큰 기반 인증

울집고양이세마리 2023. 4. 16. 00:44

혼자 프로젝트를 진행하면서, 로그인 인증을 어떻게 할지 고민을 해봤다.

Django로 할 때는 아무 생각 없이 authenticate 하나 써서 사용자 인증을 했었는데, Next.js로 하니 확실하게 공부를 하게 되는 것 같다. 아무튼 그 과정에서 공부해 본 것들을 간단하게 정리해봤다. 

 

세션 기반 인증 

세션 기반 인증은 서버가 사용자가 로그인 중임을 기억한다는 뜻이다.  사용자가 로그인을 하게 된다면, 서버는 세션 저장소(파일 혹은 DB)에서 사용자의 정보를 조회 하고, 세션 id를 발급한다. 이 때, 발급된 id는 사용자의 브라우저에 쿠키로 저장된다. 그 후에 사용자가 헤더에 id를 담아 요청을 보낼 때마다 서버는 세션 저장소의 정보(세션)을 조회한 후, 로그인이 되어있다는 것이 확인 되면 그 요청을 처리해준다. 그러나 세션 기반 인증은 서버의 리소스를 많이 차지할 수 있다는 것을 고려해야 한다.

 

토큰 기반 인증

토큰은 사용자가 로그인을 하면, 서버가 사용자에게 토큰을 만들어 줘 지급해준다. 토큰은 문자열로 이루어져 있는데, 그 문자열을 복호화 하면 사용자의 정보와 서명을 확인할 수 있다. 이 때, 서버에서 서명 데이터를 암호화 하는 방식은 SHA256 방식이다. 키는 서버만 가지고 있기 때문에 서버 외에서는 복호화가 거의 불가하다. (단방향 암호화 특) 사용자는 지급 받은 토큰을 헤더에 담아 서버에게 요청을 보낸다. 서버는 헤더의 토큰이 유효한지 검사하고, 유효하다면 요청을 처리해준다.  토큰 기반 인증은 세션 기반 인증과 다르게 사용자의 로그인 정보를 저장하는 저장소를 갖고 있지 않다. 

 

 

아마도 나는 토큰 기반 인증을 선택할 것 같다. 

토큰 기반 인증이 더 쉬워 보이기도 하고, 최근에 사람들이 많이 쓰는 추세인 것 같아서이다. 

다음에는 토큰 기반 인증을 통해 구현한 로그인 기능을 포스트 하겠다.

Comments