카테고리 없음

240603 TIL 서른네번째날 팀프로젝트 - 로그아웃

8나지 2024. 6. 3. 16:14
주제1 refreshToken 을 이용한 로그아웃
작성이유 모르는 부분이라 다음에 참고하기 위해 

 

문제상황

상황
해결방법 클론 코딩 했지만 안되는 이유 : 미들웨어에서 인증을 거치지 않았기 때문

refreshToken 유출시 : 로그아웃한다

로그인 : 이메일 , 패스워드 등 페이로드에 아이디 담아서 엑세스, 리프레시 생성 & 리프레시 저장소에 저장 
(그 저장소는 mongodb, mysql,,,)
현재는 my sql에 저장해서 사용할 것 
=> 로그아웃 또한 저장소에서 찾아서 비교해야함
해결방법 풀이 인증 하는 방법

1. 리프레시 토큰 데이터베이스 안에서 //유저아이디 일치하는지 findfirst로 찾기 

2. 해시된 토큰과 유저의 토큰을 bcrypt로 비교

3. 일치하지 않으면 에러

4. 토큰 일치시 해당 정보를 들고옴
그 외 내일 튜터님께 레고

 

* 그전에 알아야할 것 

refresh Token이란 : Access Token을 갱신하여 재로그인 할수 있음. 보통 refresh Token , Access Token 두개를 같이 발급 받는데

                                Refresh Token은 Access Token을 재발급 받기 위한 토큰이고, Access Token은 사용자의 정보를 가지고 있음.

 

                                사용자의 정보을 담은 즉, Access Token은 가지고 있을 수록 정보를 많이 담게 되는데

                                이 상황에서  Access Token을 탈취당한 다면 나의 정보를 털리는 것이기 때문에 토큰의 만료시간을 짧게 두고

                                사용하는 특징이 있다. Access Token을 쓸 때마다 만료시간이 짧아 재 로그인으로 번거롭게 사용할 수 없으니 이를                                 보완하기 위해 Refresh Token을 사용한다. 

 

 Refresh Token을 탈취당한 다면? 이때 로그아웃을 해야한다.

 

RefreshToken은 데이터베이스에서 꺼내오기


주제 1 참고사이트 :  https://skatpdnjs.tistory.com/60

 

Refresh Token 개념과 동작 원리 정리

Refresh Token이란 ? 사용자의 인증을 위한 토큰이 아닌 새로운 에세스 토큰을 생성하는 용도로 사용한다. 사용자의 인증은 access 토큰으로 하되, access 토큰의 만료시간이 끝나면 refresh 토큰으로 다

skatpdnjs.tistory.com

 

흐름을 알수있는 사이트