ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Node.js[JWT] - 토큰 기반 인증 - 1
    Node.js 2018. 2. 24. 15:02





    - Token 기반 인증 



    -    큰을 사용하여 유저들의 인증작업을 처리하는 방법


    Token 기반의 인증방법을 알기전에 세션에 대해 알고있어야한다.

    세션(Session)은 서버가 클라이언트에게서 요청을 받을때 마다, 클라이언트의 상태를 계속해서 유지하고, 이정보를 서비스 제공에 이용한다.

    서버가 세션을 관리하고 있으며 사용자의 정보를 서버컴퓨터의 메모리 또는 데이터베이스 시스템에 담아둔다.



    <서버 기반의 인증- 세션>



    세션에 대해서 다시 정의 해보자면 유저가 인증을 할때 , 서버는 이 기록을 서버에 저장하는데 이를 세션이라고 한다.

    세션의 단점은 만약 서버에 다수의 유저들이 인증을 시도한다면 아마 서버에선 과부하가 걸릴 위험이 있게될것이다.

    또한 세션을 관리하기 위해 서버는 확장을 하기가 어려워진다. 만약에 세션을 서버측에 저장하고 있고, 서버의 확장으로 인해 여러 대의 서버를 사용하여 요청을 분산하였다면 , 어떤 유저가 로그인 했을땐, 그 유저는 처음 로그인했었던 그 서버에게만 요청을 보내도록 설정해야한다.

    이렇게 되면 세션을 사용하면서 분산된 시스템을 설계하는것은 매우 복잡한 과정을 거치게된다.


    이러한 문제를 해결하기위해 나온 방식이 토큰 기반의 인증 방식이다.

    먼저 어떻게 돌아가는지 그림을 보자.



    < 토큰 기반 인증 >


    서버측에서 유저의 인증이 정상적으로 이루어 진다면 토큰을 생성 한다.

    그 토큰을 응답메세지와 함께 클라이언트에게 보내며 그것을 클라이언트측에서 저장한다.

    이제 서버에게 요청을 할때 마다 , 해당 토큰을 함께 서버에 전달하고 그것을 서버는 검증만하고 요청에 따라 응답을 한다.


    확장성과 보안


    토큰 기반 인증 방식을 따르면 확장성을 가질수 있다. 

    요즘 웹사이트의 로그인 절차를 보면 Google,Facebook,Twitter 등 과 같은 소셜 계정을 통해서도 로그인이 가능하다.

    토큰방식은 이와 같이 로그인정보가 사용되는 분야를 확장하여 다른 서비스에서도 권한을 공유할수 있다.

    타사의 응용 프로그램에 대한 선택적 사용 권한을 제공하는데 예를 들어 Google 계정으로 로그인했을때 계정의 프로필 정보만을 권한을 주어 보여지는 모습이 그러하다.


    보안으론 완벽한 방어가 되진 앉지만 기존의 쿠키방식보다는 좀더 안전하다고 할수 있다.

    쿠키는 상대적으로 조작/위변조의 가능성이 높기때문에 여러가지 장치를 통해 쿠키 정보를 조작할수 없게 혹은 조작하면 쓸모없어지게 만든다.

    토큰은 설정된 시간이 지나면 만료되게 하여 좀더 보안적인 측면을 높여주거나 동일한 권한 부여를 기반으로 특정 토큰 및 토큰 그룹을 무효화 할수 있는 토큰 해지 방식도 가지고 있다.



    이번 장에서 어느 정도 토큰 기반 인증 시스템의 개념을 잡고 다음 장부터는 이 방식으로 구현된 웹 표준 기반의 JWT 에 대해 알아보도록 하자.


    Ref


    'Node.js' 카테고리의 다른 글

    Node.js - Webpack  (0) 2018.08.09
    Node.js - Babel  (0) 2018.08.07
    Node.js[2] - Event Loop, 주의사항  (0) 2018.04.01
    Node.js[JWT] - 토큰 기반 인증 - 2  (0) 2018.03.24
    Node.js[1] - Single thread,Async,Callback  (0) 2018.02.16
Designed by Tistory.