인증과정에서 Token(토큰)은 주로 FE를 통해 진행하난요? 또는 BE를 통해 진행하나요?(JWT를 쓰지 않고서...)


(hmpunk) #1

안녕하세요? 구현이라고 합니다.
기술검토에 대해 요청을 받아 고수 개발자 분들의 의견을 여쭙고자 합니다.
기본적인 골자는 다음과 같습니다.
React_ Frontend(View단 처리)
Redux_ Action(요청, 호출 등에 대한 동작 처리)
Django_ 서버(Token 생성, 파기 등…)

이렇게만 놓고 본다면 당연히 장고(서버)에서 직접적으로 Timeout을 발생시켜 토큰을 파기시키면 될 거라 생각했으나, 반면에 클라우드 서비스를 위한 것 이기에 서버 부하가 커질 것이 우려가 되어 클라이언트 사이드(FE) 쪽에서 직접 만료시간에 따라 Token 파기에 대한 요청을 보내는 쪽으로 방향을 잡으려고 하였습니다.

하지만, 결과적으로 요청을 받은 것은 어떻게 하는 것이 일반적으로 필드에서 적용하는가? 를 파악하는 것 이 되었습니다.

다른 개발자 분들의 생각은 어떠하신가요?

이렇게 글로만 작성하니 파악하기 어려우실 것 같아 제가 간단히 정리했던 블로그 자료와 깃헙 주소를 첨부하도록 하겠습니다.

  1. 블로그 자료: 리액트 장고 Authentication
    https://hyunvinci.tistory.com/127
  2. Traversy
    https://youtu.be/kfpY5BsIoFg?list=PLillGF-RfqbbRA-CIUxlxkUpbq0IFkX60
    https://github.com/bradtraversy/lead_manager_react_django

의견을 부탁드립니다. 감사합니다.


(name) #2

클라이언트에서 만료시간을 처리할 경우에는 컴퓨터의 시간을 변경하는 것만으로 토큰을 계속해서 유지할 수 있을텐데
파기 되지 않고 계속해서 사용할 수 있는 토큰은 탈취 당하는 순간부터 보안에 문제가 생기지 않을까 싶습니다.

토큰을 직접 구현하신거라면 토큰 생성 당시에 만료 시간을 포함하여 인코딩하고
이를 검증할때 해당 정보로 파기시키는 방법이 좋을 것 같네요.


(sorieil) #3

보안은 전적으로 백엔드에서(발행,관리,파기, 도메인체크) 진행하고, 프론트엔드는 토큰을 이용만 하게 하면될거 같습니다. 그리고 혹 탈취 하더라도, 크로스 도메인 체크 해놓으면, 실제로 뚫기는 쉽지 않습니다. 그리고 서버에서 api 통해서 데이터를 가져오더라도, 토큰이 허용하는 부분까지만 데이터를 서버에서 가져오는거라서 서버에서 데이터 가져오는 부분에 대한 구조만 잘 구축한다면 보안적 이슈도 없을거라 생각합니다. 전 이런 구조로 아직까지 작업했습니다.