우리 사이트의 입장권을 만들어 볼까요?
NOTE
- 서버에서 인증 정보를 관리하기 위해 주로 세션과 JWT를 많이 사용합니다.
- 라이브러리를 사용하려다가 '이 정도는 직접 만들어볼 수 있지 않을까?' 하는 생각에 직접 구현해본 경험을 공유드리고자 합니다.
- "이렇게 하는구나" 만 보고 실제 구현은 검증된 라이브러리를 사용하는 것을 추천드립니다.
1. JWT란?
- RFC 문서: https://datatracker.ietf.org/doc/html/rfc7519
- JWT(JSON Web Token)의 사전적 정의와 개요 등은 위의 RFC 문서에서 확인하실 수 있습니다.
- 저는 암호화 규격, 암호화 대상 정보를 JSON으로 표현하고, 암호화하여 사용하는 토큰이라고 이해하고 있습니다. (정확한 정의는 아니지만, 외우기 쉽습니다.)
- 이렇게 만들어진 토큰을 클라이언트와 서버가 교환하면서 인증 정보나 다양한 정보를 안전하게 주고받을 수 있습니다.
- 즉, 우리 업장의 입장권이라고 생각하시면 더 이해하기 쉬울 것입니다.
2. 왜 세션 방식 대신 토큰을 사용할까요? (장점)
- 제가 JWT를 사용하는 가장 큰 이유는 서버에서 인증 정보를 보관하지 않아도 되기 때문입니다.
- 아래는 챗GPT가 정리해준 JWT의 장점입니다.