<aside> 💡 클라이언트에서 보관하는 암호화된 인증정보.
세션처럼 서버에서 사용자 인증 정보를 보관할 필요가 없기 떄문에 서버 부담을 줄여준다.
주로 JWT (Json Web Token) 을 이용한다.
</aside>
<aside> 💡 특징
header.payload.signature 형식으로 3가지 데이터로 구성.
국제 인터넷 표준 인증 규격 중 하나.
암호화된 토큰을 누구나 복호화 하여 볼 수 있다. 이는 위조 방지로 쓰이기 때문
정보를 토큰화할 때 secret key가 필요하며 이는 복호화가아닌 유효한지 검증하는데 사용
</aside>
<aside> 💡 로그인/회원가입 시
클라이언트 (post) 요청 → 서버에서 JWT 토큰 발급하여 응답 → 클라이언트에서 쿠키에 토큰 저장
</aside>
<aside> 💡 인가가 필요한 API 요청/ 응답
클라이언트 쿠키에 있는 토큰으로 요청 → 서버에서 토큰 유효 상태 확인 후 응답 → 클라이언트 응답받음
</aside>
세션 인증 | 토큰 인증 | |
---|---|---|
인증정보 저장 위치 | 서버 | 클라이언트 |
확장성(Scale-out) | 나쁨 | 좋음 |
보안성 (상대적) | 좋음 | 나쁨 |
비용 (상대적) | 비쌈 | 저렴 |