토큰?

<aside> 💡 클라이언트에서 보관하는 암호화된 인증정보.

세션처럼 서버에서 사용자 인증 정보를 보관할 필요가 없기 떄문에 서버 부담을 줄여준다.

주로 JWT (Json Web Token) 을 이용한다.

</aside>

JWT 토큰

<aside> 💡 특징

  1. header.payload.signature 형식으로 3가지 데이터로 구성.

  2. 국제 인터넷 표준 인증 규격 중 하나.

  3. 암호화된 토큰을 누구나 복호화 하여 볼 수 있다. 이는 위조 방지로 쓰이기 때문

  4. 정보를 토큰화할 때 secret key가 필요하며 이는 복호화가아닌 유효한지 검증하는데 사용

    https://jwt.io/

</aside>

JWT 토큰 인증 방식

<aside> 💡 로그인/회원가입 시

Untitled

클라이언트 (post) 요청 → 서버에서 JWT 토큰 발급하여 응답 → 클라이언트에서 쿠키에 토큰 저장

</aside>

<aside> 💡 인가가 필요한 API 요청/ 응답

Untitled

클라이언트 쿠키에 있는 토큰으로 요청 → 서버에서 토큰 유효 상태 확인 후 응답 → 클라이언트 응답받음

</aside>

세션 인증 vs 토큰 인증

세션 인증 토큰 인증
인증정보 저장 위치 서버 클라이언트
확장성(Scale-out) 나쁨 좋음
보안성 (상대적) 좋음 나쁨
비용 (상대적) 비쌈 저렴