계속 수정중입니다. (2021.06.30)
이론 내용들
JWT 를 이용해서 사용자 로그인 세션 처리를 하려니 용어가 access token, refresh token 이렇게 나오네.
일단 당연히 구글 검색을...
일단 JWT는
로그인 정보로 DB 검증이 되면 access token, refresh token을 발행해라
이때 access token 은 기한을 분단위로 (30분, 15분등등) 만료가 되도록 발행하고,
refresh token은 한 일주일 정도의 만료기간으로 발행해라.
대부분의 접근은 access token으로 이루어진다. HTTP 헤더에 bearer option 필드에 이 access token 값을 넣어서 접근하는 방법이다.
만료가 되었거나, 만료가 다 될 것을 클라이언트에서 미리 인지하거나 하면 refresh 토큰을 이용하여 재 발급을 받는 과정을 거치면 계속 사용할 수 있다.
여기가 살짝 헷갈리네,
access token 자리에 refresh token 값을 넣어서 특정 url 쪽으로 접근해서 재 발급 받아라는 것으로 이해가 되는데..아래 글들을 보면 2개를 다 보낸다는 얘기도 있고, 2개를 다 보내려면 헤더 어디에 실어주나..
그리고,
From Grphql을 사용하는 Frontend에서 JWT다루기
근데, 내 JWT를 다른사람이 훔쳐서 쓸수도 있잖아요?
맞습니다. 올바르게 로그인을 해서 Access Token을 받은 후에 Access Token을 탈취당하는 경우가 있습니다. Access Token을 훔친 도둑은 마치 자신이 해당 서비스의 회원인것처럼 API Request를 막 날릴 수 있습니다. 이런 이유때문에 Access Token에는 만료 기한이 설정되어있습니다. 보통 15분정도로 설정해 놓습니다. 이 시간이 지나면 해당 Access Token로는 더이상 서버와 통신할 수 없습니다. Access Token절도를 방지하려면, Access Token를 cookie나 localstorage에 보관하지 않는것이 중요합니다.
토큰이 만료가 되면...
서버는 Access Token이 만료되면 401 Unauthorized 에러를 보내겠죠. Client쪽에서는 401 Unauthorized 에러 메세지를 받으면, logout을 시켜버리면 됩니다.
계속 찾아보고 정리하고, 먼저 찾아둔 레퍼런스 글들만 정리해 두자.
토근 값만 있으면 정보를 다시 추출해서 보여주는 사이트는 일단 키핑.
만료를 15분으로 해 뒀더니, nbf, exp을 빼 보면 900 (초) 즉, 15분으로 딱 적혀있네.
구현 예제
딱 기본만 구현해 둔 설명 사이트
flask_jwt_extended 를 이용한 튜토리얼 사이트인데, React Frontend 구현부분 까지 설명이 포함되어 있다.
https://content.breatheco.de/en/lesson/what-is-JWT-and-how-to-implement-with-Flask
From - https://www.programmersought.com/article/55186356815/
The most basic usage does not require many calls, only three functions are used:
1. create_access_token()Used to create token
2. get_jwt_identity()Used to obtain the previous identity information based on the token
3. jwt_required()This is a decorator to protect flask nodes
추가 레퍼런스 글들
- https://yonghyunlee.gitlab.io/node/jwt/
- https://tansfil.tistory.com/59
여기 사이트에서 그려준 그림이 참 맘에 드네요.
같은분이 적은 글 같기도 하네요. 여기에는 더 많이 정리되어 있네요.
https://wrkholic84.github.io/Authentication/
Grphql을 사용하는 Frontend에서 JWT다루기
- https://kohen.tistory.com/3?category=743309
- https://showerbugs.github.io/2017-11-16/OAuth-%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%BC%EA%B9%8C
'IT > 파이썬' 카테고리의 다른 글
Flask JWT 로그인 기능을 위한 자료 조사 - flask-jwt-extended (0) | 2021.07.01 |
---|---|
작업중 - 서버 구조 구성 Flask API + ReactJS Frontend + GUnicorn (0) | 2021.06.30 |
파이썬 - 정규표현식 (0) | 2021.06.29 |
파이썬 - 문자열에 숫자 접미사를 붙여서 리스트 만들기 - 한줄로! (0) | 2021.06.24 |
파이썬 - 데코레이터 함수 (0) | 2021.06.22 |