🤔 무엇을
프론트앤드(FrontEnd)의 도메인 a
API를 요청하는 서버의 도메인은 b
FE에서 b로 post request를 요청하였을때 서버에서 set-cookie를 적용하면 크롬은 쿠키가 남는데 사파리는 남지 않는다.
👉 브라우저 쿠키 정책일 가능성이 매우 높습니다.
쿠키 라는것 자체가 원래 브라우저에서 관리하는 것이다 보니 브라우저 별 이슈가 있을 수 있고 없을 수도있다. 그래서 jwt를 쓰는 경우가 많다.
jwt를 쓰느냐 쿠키를 쓰느냐는 의견이 나뉜다.
브라우저의 쿠키를 사용하면 정보자체의 저장과 처리 그리고 보안을 브라우저에 떠넘겨서 개발이 편하다.
하지만 그 만큼 브라우저 디펜던시에 영향을 받을 수 밖에 없다.
jwt는 쿠키로 저장했다가 비교하고 만료되면 갱신하고 하는 것 아니었나…?
하지만 결국 못막기 때문에 짧은 생명주기를 가지게해서 쿠키로 만든다.
리프레시는 디비에 저장한다.
- 일단 토큰 > api > 유효성 체크(성공시) > api 처리
- 일반 토큰 > api > 유효성 체크(실패시) > 디비에서 리프레시 토큰을 꺼내옴 > 유효성 체크 > 새 토큰 발급 > api 재요청 > api 처리
유효성이란게 토큰이 정상적인 것도 판단하지만 만료 기간도 체크
jwt 레퍼런스 상에 보안문서는 절대 담지 못하게 되어있다.
access token 같은 민감 정보는 절대 못담게 한다.
그래서 보통은 JWT
는 현재 유저가 유효한지에 대한 인증만 하는게 맞다.
민감 정보는 숨긴다.
만약? JWT
에 민감 정보를 담으려먼 자체 암호화나 JWE
같은 암호화 라이브러리를 사용 JWT
관련해서는 쿠키 or 스토리지에 저장해도 상관없다.
JWT
의 생명주기는 짧게 하는것이 맞다.JWT
는 한번 발급 되면 서버 단에서 폐기 불가능해서 생명주기를 짧게 하는 것이 맞는 말입니다.