리프레시 토큰에 대해서(추가) > RESTful

RESTful

리프레시 토큰에 대해서(추가) 정보

리프레시 토큰에 대해서(추가)

본문

검색을 좀 더 해 보고 있습니다.

 

저와 같은 생각을 가지고 있는 사람도 있고...

https://zzossig.io/posts/etc/what_is_the_point_of_refresh_token/

 

해외쪽을 찾아보면, 리프레시 토큰의 장점은

 

1. Access Token을 짧게 하면,  사용자가 불편하고(매번 로그인해야.), 이것을 길게 하면, 토큰이 유출되었을 때의 불안감이 있죠. (아마도 매번 API콜할 때마다 헤더에 포함되다 보니, 찾을 가치가 있다고 하면 찾을 수가 있게죠.)

 

2. 쇼핑몰 같은 중요한 사이트라고 하면,  이 문제에 대한 대안으로 리프레시 토큰을 고려해서 보안성을 좀 더 높이는 쪽으로 가야 될 것 같습니다.

 

3. Access Token은 1시간, Refresh Token은 2주로 주고. (발급하는 방식은 같음).

   1. Access Token이 끝나면, Refresh Token을 보내서 Access Token을 발급 받음

   2. 발급시 Refresh Token은 암호화해서 데이타베이스에 저장해 놓음. 

   3. Refresh Token이 도착했을 때,  데이타베이스에 있는 저장된 토큰과 비교함.  틀리면 Access Token 발행 안함.

   4. Refresh Token이 유효한지 체크해서 Expire가 안되어 있으면, Access Token을 발행.

   5. 다른 디바이스에서 로그인 했을 때, 새로 발급된 Refresh Token이 데이타베이스에 저장됨으로 기존에 발급된 Refresh Token은 모두 무효가 됨.

   6. 데이타베이스에 암호화(해시)해서 저장하는 이유는 데이타베이스가 해킹 되었을 때를 대비해서 암호화해 둠.

   7.  로그아웃을 할 경우에는 클라이언트에서는 Access Token을 지우고, 서버에서는 데이타베이스에서 Refresh Token을 지움.

 

대략적으로 구현되는 방법 같습니다.

 

서버에서 각 개인별 발행된 토큰을 무효화 하는 방법은 없을 것 같습니다.  전체 토큰을 한번에 무효화는 시크릿 키를 바꿈으로 가능할 것 같습니다. (검색이 더 필요함.)

 

Refresh Token을 보낼때, 만료된 Access Token도 보낸다고 되어 있는데,  어차피 만료된 토큰을 굳이 보낼 필요가 없을 것 같음. (만료된 Access Token을 보낸다고 하면, 이것도 데이타베이스에 저장되어 있어야 되는데, 그렇게 되면 불필요한 데이타베이스 억세스가 생길 것 같은데,  2개의 토큰이 비교되면, 시큐리티는 좀 더 좋아질 것 같습니다.)

  

추천
0

댓글 5개

고려해보아야할 부분 남겨주셔서 감사드립니다. 선뜻 토큰 체제로 가는 것에 대한 검증된 지식과 확신을 모두들 원하는 것 같기도하네요...
저는 오늘 이걸로 테스팅을 해보았어요... 간단히...
(예제에 상대경로가 틀려 조정이 필요했지만... 간단한 공부가 된 것 같습니다.)
https://www.techiediaries.com/php-jwt-authentication-tutorial/
혹시 더 구체적인 자료 같은거 있나요.. 저도 갑자기 필요하게됐는데 ㅠㅠ 뷰로 로그인 다시 수정해야되서요 vuejs로 구현 하는대 개념이 이해되지 않고 생소해서요,,
프런트엔드보다는 백엔드에서 처리할 내용입니다.  백엔드에서 PHP면 PHP코드를 찾아봐야 되는데 아마도 라라벨쪽이 많이 나올 것 같습니다.

저도 아직도 이해가 잘 안되기는 합니다.
전체 96 |RSS
RESTful 내용 검색

회원로그인

진행중 포인트경매

  1. 참여71 회 시작24.04.19 15:40 종료24.04.26 15:40
(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT