개발자

jwt를 쿠키에 담을까요, 헤더에 담을까요?

2023년 01월 12일조회 1,845

jwt토큰을 쿠키로 받을지 header authorization 토큰으로 받을지 고민중입니다. 차이점은 계속 알아보고 있는데, 둘중에 뭘 써야한다! 라는 확신이 안생기네요.. 둘다 상관 없는 것(하면 될 것) 같은데..? 라는 결론에 도달합니다.. 클라이언트는 flutter기반 모바일 앱이고, 서버는 nestjs 위에 작성하고 있습니다.

이 질문이 도움이 되었나요?
'추천해요' 버튼을 누르면 좋은 질문이 더 많은 사람에게 노출될 수 있어요. '보충이 필요해요' 버튼을 누르면 질문자에게 질문 내용 보충을 요청하는 알림이 가요.
profile picture
익명님의 질문

답변 2

손정현님의 프로필 사진

안녕하세요! OAuth Bearer 토큰을 위한 JWT라면 정해진 스펙이 있긴합니다. 서버에서 처음 내려줄때는 https://www.rfc-editor.org/rfc/rfc6750.html#page-10에 의하면 body에 내려주는 것 같네요. 이렇게 전달 받은 jwt 토큰을 클라이언트에서 어딘가 저장을 해야하는데, 이게 보통 주요 논점이 되는 것 같습니다. 밑 글에 따르면 그나마 쿠키가 괜찮은것같다고 하시네요. - https://www.springcloud.io/post/2022-02/jwt-cookie/#gsc.tab=0 (참고) "어라? 이렇게 생각하니 굳이 jwt를 response body로 안보내고 set-cookie로 response header에 넣으면 되겠는데?" 해서 많은 분들이 cookie를 주로 사용하시는 것 같습니다. (가설입니다) 스펙에 따르면 클라이언트에서 요청을 할때는 request header에 Authorization: Bearer {token} 형태로 보내주는게 일반적입니다. set-cookie로 했다면 쿠키에 포함되어 있겠죠. 다만, 스펙이 명시되어있다고 해도 필요하다면 다른 방식으로 구현해도 무방해보입니다. Bearer 토큰이 아니라면 굳이 위 스펙을 따를 필요도 없구요. 개인적인 경험으로 앱은 잘모르겠지만 웹, 웹뷰인 경우 종종 사파리 브라우저나 ios에서 권한 문제로 추가적인 설정을 해줘야 쿠키를 비롯한 다른 웹 API를 쓸 수 있었던 기억이 있습니다. 결론은 어떤 방식으로 구현을 하시든 각 장단점이 있고 서비스에 가장 적합한 솔루션으로 구현하시면 될 듯 합니다 :)

profile picture

익명

작성자

2023년 01월 13일

이런 기술 관련한 의사결정을 할때 어떤 것들을 주로 참고하고 어떤 흐름으로 고민해야하는지 알게된 것 같습니다! 감사합니다ㅎㅎ 쿠키 방식을 고려해볼 것 같기는한데, 앱에서 사용이 가능한지 자체를 먼저 알아보는게 우선이었네요..

이범희님의 프로필 사진

쿠키는 브라우저 스펙이므로 플러터로 개발시 웹뷰를 띄워서 웹뷰에서 로딩한 웹페이지에서 api를 요청하는 형태로 서비스를 개발해야만 선택할 수 있을거에요. 그렇지 않고 그냥 플러터로 개발할때에는 body 로 받아서 헤더로 토큰을 전달하는 형태로 해야해요

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직자들의 명쾌한 답변을 얻을 수 있어요.

또는

이미 회원이신가요?

목록으로

실무, 커리어 고민이 있다면

새로운 질문 올리기

지금 가입하면 모든 질문의 답변을 볼 수 있어요!