ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Cookie, Session, JWT(+ JWT를 SSL과 함께 사용해야 하는 이유)
    카테고리 없음 2020. 7. 9. 17:33

    Cookie는 작은 기록 정보 파일이자 클라이언트에 정보를 저장하는 기술이다.

    Cookie와 Session, 또는 Cookie와 토큰을 비교하는 것은 합당하지 않고 Cookie와 Local Storage를 비교하는 것이 맞다.

    Cookie와 Local Storage 둘 다 일종의 저장 방식이다.

    JWT는 Cookie나 Local Storage 안에 저장될 수 있다.

     

    그리고 JWT와 Session을 비교하는 것이 맞다.

    토큰은 서버가 사용자의 신원을 검증하기 위한 모든 정보를 가지고 있기 때문에 JWT의 내용을 찾기 위해 DB를 뒤질 필요가 없다.

    Session의 경우, 프론트엔드와 백엔드 두 부분을 가지고 있다.

    Session은 일부분을 백엔드에 저장하기 때문에 DB 공간을 차지한다.

    사용자 인증이 얼마나 오래 유지되게 하는가에는 둘 다 차이가 없다.

    JWT나 Session이나 유효시간을 5분 또는 60일 등으로 설정할 수 있다.

     

    1. Cookie에 저장된 Token을 서버에서 가져와 복호화를 한다.

    2. 복호화를 하면 나오는 User ID를 이용해서 User Collection에서 사용자를 찾은 후 해당 사용자가 쿠키에서 받아온 token을 갖고 있는지 확인한다.

     

    JWT를 SSL과 함께 사용해야하는 이유?

    JWT는 보유자에게 인증 및 권한을 제공하는데, 기본적으로 암호화되어 있지 않다. 누군가가 토큰을 훔치지 않도록 하려면 SSL이 가장 좋은 옵션이다.

    예를 들어 사용자가 성공적으로 로그인하면 서버는 사용자에게 토큰을 전달한다. 이 토큰은 "이 사용자의 아이디는 <user_id>고 역할은 <role1, role2>다" 라고 명시하고 있다. 토큰이 서버에 의해 서명되므로, 서버는 나중에 토큰의 내용이 변경되지는 않았는지 확인할 수 있다.

    다음 요청부터 서버는 클라이언트가 보낸 토큰의 유효성을 확인할 것인데, 만약 이 토큰이 다른 누군가의 손에 들어간다면 그 사람은 토큰 보유자의 흉내를 낼 수 있다.

    클라이언트와 서버 사이에 secure connection을 제공하는 SSL은 클라이언트가 암호화되지 않은 아이디와 패스워드를 네트워크로 보내는 것을 막고, 누군가가 토큰을 훔칠 수 없게 한다.

    이 프로토콜을 channel로 구현하면 secure tunnel이 생성되고 전체 통신이 암호화되어 데이터 누출(data leakage) 가능성이 감소한다. 일부 공격은 Man-in-Middle 공격과 같이 SSL에서도 지속되지만, channel security를 강화하기 위한 암호 알고리즘의 강력한 사용으로 인해 communication payload를 해독할 기회는 매우 적다.

    안전하고 강력한 애플리케이션의 경우, 강력한 인증 방법으로 프로비저닝된 secure channel을 통해 구현하는 것이 명백하다.

     

    https://www.quora.com/Do-I-have-to-use-SSL-with-jwt-Is-jwt-enough

     

    Do I have to use SSL with jwt? Is jwt enough?

    Answer (1 of 4): SSL and JWT solve very different problems... A JWT token brings authentication / authorization to its bearer. It is not encrypted. To prevent someone stealing the token, SSL is your best option. For instance, during login the user sends a

    www.quora.com

     

Designed by Tistory.