프로그래밍언어/파이썬[Error]

[파이썬][Error] 094. AuthenticationError - InvalidTokenError

about_IT 2025. 5. 31. 05:38
728x90

AuthenticationError: InvalidTokenError 오류는 사용자 인증 과정에서 전달된 토큰(token)이 유효하지 않거나 위조되었을 때 발생하는 예외입니다. 이 오류는 일반적으로 JWT(JSON Web Token) 기반 인증, OAuth 인증, API 키 검증 등에서 많이 발생하며, 인증 서버 또는 클라이언트의 토큰 처리 로직에 문제가 있을 수 있습니다.

이 오류는 보통 PyJWT, Authlib, requests-oauthlib 같은 외부 라이브러리를 사용할 때 발생하며, 토큰이 만료되었거나 서명이 조작되었거나 형식이 올바르지 않은 경우에 발생합니다.

● 오류 발생 예시

import jwt

try:
    decoded = jwt.decode("invalid.token.value", "secret", algorithms=["HS256"])
except jwt.InvalidTokenError:
    print("유효하지 않은 토큰입니다.")

잘못된 형식의 JWT 토큰을 decode하려 할 경우 InvalidTokenError가 발생합니다.

● 해결 방법

  • 토큰 유효성 검사: 서명, 만료 여부, 구조 확인
  • 클라이언트 측에서 토큰 발급/저장 방식 점검
  • 디코딩 시 사용한 키와 알고리즘 일치 여부 확인

● 예시 코드 (토큰 유효성 검사 포함)

import jwt
from jwt.exceptions import ExpiredSignatureError, InvalidTokenError

token = "..."
try:
    decoded = jwt.decode(token, "secret", algorithms=["HS256"])
except ExpiredSignatureError:
    print("토큰이 만료되었습니다.")
except InvalidTokenError:
    print("유효하지 않은 토큰입니다.")

● 자주 하는 실수

  • 만료된 토큰을 계속 사용하거나 재발급 로직 누락
  • 잘못된 secret 키 또는 알고리즘으로 decode 시도
  • 토큰 포맷(JWT 구조 등) 자체가 손상됨

● 결론

AuthenticationError - InvalidTokenError는 인증 토큰이 유효하지 않을 때 발생하는 오류입니다. 보안상의 이유로 정확한 키, 유효 시간, 구조 등을 확인하는 철저한 검증이 필요하며, 예외 발생 시 명확한 사용자 피드백을 제공해야 합니다.

728x90