Hyunseok
현재 사이트는 2024년 11월 이후로 업데이트 되지 않습니다. 새 글은 블로그로 확인해주세요. 블로그로 이동
프로그래밍/팀프로젝트 [팀프로젝트 외전] JWT는.. 왜 ..
2022. 8. 23. 20:00

현재 사이트는 2024년 11월 이후로 업데이트 되지 않습니다. 새 글은 블로그로 확인해주세요. 블로그로 이동

저번 주에 강사님이 말씀하셨다

 

"token관리로 중간에 redis나 mongodb 같은 녀석들을 써서 토큰을 관리해야 합니다"

 

수업 끝나고 달려가서 물어보니.. 일단 쓰라하신다.. 금요일이라 바쁜 일이 있으시나 보다 

 

할 수 없이 혼자 찾아보았는데.. 중간에 nosql 등으로 토큰을 관리하는 기술이 하나 있었다

 

"아.. 이건가..? " 하면서 글들을 돌려봤다 

 

내용은 이러했다 

 

만약 jwt토큰이 도난당한다면..?라는 보안에 관련된 문제였다 

 

jwt는 말 그대로 토큰이지 않은가? 유효기간이 있지만 일단 한 번 발급하면

 

이놈으로 유효기간 끝날 때까지 일단 접근이 가능하다는 것이다 

 

이걸 조금이라도 더 나은 식으로 관리하기 위해 토큰을 두 개로 나눈다는 것을 보았다 

 

기~인 유효기간을 가지는 리프레쉬 토큰과

짧은 유효기간을 가지는 액세스 토큰으로..

 

로직은 대충 이러한 것 같다 

 

1. 프론트단에서 로그인 요청을 하면 백엔드 쪽에서 액세스 토큰과 리프레쉬 토큰을 넘겨준다 

 

2. 대신 백엔드에서 중간에 sql에 리프레시 토큰을 저장을 한다 

 

3. 프론트단에서 액세스 토큰의 유효기간이 끝나면 백엔드 쪽에서 다시 액세스 토큰을 뿌려준다

 

여기서 로직이 갈린다 

 

1. 액세스 토큰과 리프레시 토큰이 다 죽어있는 경우

 ㄴ 묻지도 않고 따지지도 않고 연결을 끊어버린다 

 

2. 액세스 토큰은 죽고 리프레시 토큰이 살아있는 경우

ㄴ 액세스 토큰을 갱신해서 다시 넘겨준다

 

3. 엑세스 토큰은 살아있고 리프레시 토큰이 죽어있는 경우 

ㄴ 리프레시 토큰을 갱신해서 다시 넘겨준다

 

4. 둘 다 살아있는 경우

ㄴ 다음 단계로 넘긴다

 

결국 이 방법도 리프레시 토큰이 털리게 된다면 소용없지만

 

그래도 액세스 토큰 하나로 관리할 때보다는 여러 작업이 가능해진다 

(해킹당했는데 액세스 토큰이 만료되어있지 않을 경우

리프레시 토큰 통해 엑세스토큰을 막아버린다던가 .. 그런식으로 .. 활용가능하지않을까 ?) 

 

여하튼 이러한 내용의 토큰 관리법도있던데 ..

 

그러면 두개가아니고 세개 네개까지 쓰면 조합이 더 다양해지지않을까 생각된다 . (귀찮긴하겠다)

 

여하튼.. 팀프로젝트 말쯤에 가서 시간나면 이것도 구축해봐야겠다

 

 

 


프로그래밍/팀프로젝트의 다른 글