로그인 성공 시, 토큰은 어디에 담아줘야 할까?

DongHwan·2022년 6월 9일
0

WEB

목록 보기
2/2

JWT와 같은 토큰 기반의 인증을 사용하는 서버에서 로그인이 성공했다면, 토큰을 클라이언트에게 보내주어야 한다. 나는 보통 헤더에 이 토큰을 담아서 클라이언트에게 반환해주는데, 문득 어떤 필드에 이 값을 담아주어야 할지 고민이 되었다. 그래서 여러 글들을 찾아가며 정리한 내용을 써보고자 한다.

Authorization

일반적으로 가장 많이 사용하는 헤더일 것이다. 사실 대부분의 경우에 가장 적절한 헤더이기도 하다. 헤더의 형식은 Authorization: <type> <token>이며, JWT를 사용하는 경우 Bearer을 타입으로 한다. 이 타입 말고도 Basic이나 Digest 등 다양한 타입이 있지만, 사실상 사용할 일은 거의 없을 것이다.

access_token

OAuth 2.0에 대한 RFC 문서에서는 access_token 헤더를 사용하라고 한다. 또, 이 경우 token_type 역시 필수적으로 들어가야 한다. 추가로 만료 시간을 나타내는 expires_in을 설정하는 걸 권장하고, refresh_token을 같이 사용할 수도 있다.

만약 서버에서 클라이언트에게 access_tokenrefresh_token을 모두 제공하기로 결정되었다면, 해당 규약을 사용하면 좋을 것 같다.

다만 이 방식은 OAuth 2.0의 스펙이기 때문에 실제 클라이언트와 통신하는 API 서버에 적용하는 것은 좀더 고려해보아야할 것이다. 참고로 카카오 REST API에서 OAuth API에 해당 스펙을 사용한 것을 알 수 있다. 만약 내가 만들 서버가 OAuth의 Authorization Server 역할을 맡게 된다면, 해당 스펙을 사용하자.

총총

생각보다 빠르게 결론이 나버려서 크게 적을 것이 없다...

참조

https://stackoverflow.com/questions/51503024/how-does-server-return-jwt-token-to-the-client
https://www.rfc-editor.org/rfc/rfc6749#section-5.1

profile
날 어떻게 한줄로 소개해~

0개의 댓글