강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

노른자님의 프로필 이미지
노른자

작성한 질문수

탄탄한 백엔드 NestJS, 기초부터 심화까지

JWT와 로그인 서비스 & 순환 참조 모듈

모바일에서 jwt 보관

작성

·

249

0

질문이 있습니다.

보통 웹 브라우저의 경우

쿠키(httpOnly)에 refreshToken 를 보관하고

로컬스토리지에 accessToken을 저장하는것으로 알고있는데,

 

모바일 앱같은경우엔 jwt를 어디에 보관해야하는지 모르겠습니다. 보통 실무엔 어디에 저장하나요??

 

그리고 refresh토큰을 사용하면 jwt가 가질 수 있는 이점이 줄어드는것같아 accessToken 만 사용하고싶은데, 토큰 탈취가 어떤식으로 이루어지는지는 모르겠으나, 어차피 refresh토큰을 탈취당하면 그것으로 accessToken을 발급받을 수 있으므로, 그냥 refresh토큰을 저장하는곳에 accessToken을 저장하면 되지않나 싶습니다.

요약하자면

1. 모바일앱에서 accessToken만 사용하여도 되는지,

2. 모바일앱에서 accessToken과 refreshToken을 보통 어디에 저장하는지, 알고싶습니다!

 

추가 아이디어

accessToken만 사용할시 보안대책.

1 유저 생성시 디비에 key 컬럼을 만들어 uuid 키를 저장하고 jwt에도 넣는다.

 (뭔가 내 계정이 해킹당한것같다 싶은 낌세가든다면 이후 과정)

2 프론트에서 현재 로그인 되어있는 모든 기기 로그아웃 버튼을 누른다.

3 서버에서 유저의 key컬럼의 uuid키를 바꾼다음 db를 업데이트한다.

4 동시에 jwt도 업데이트하여 새로운 accessToken을 발급한다.

5 기존에 쓰던 jwt는 validate과정에서 키가 db와 일치하지 않으므로 무쓸모가된다.

 

라고 머리 좀 굴려서 생각해봤는데 제 시나리오대로 흘러갈까요...

이러면 refreshToken은 필요없을것같은데, 물론 유저가 해킹당한 낌세를 못느끼면 그만이지만,,,,

퀴즈

민감한 데이터(예: 데이터베이스 URI)를 코드에 직접 노출하는 대신 권장되는 안전한 방법은 무엇일까요?

하드코딩하여 사용합니다.

환경 변수를 사용합니다.

주석으로 처리해둡니다.

별도의 파일에 확장자 없이 저장합니다.

답변

답변을 기다리고 있는 질문이에요
첫번째 답변을 남겨보세요!
노른자님의 프로필 이미지
노른자

작성한 질문수

질문하기