Django DRF: 외부 서비스를 위한 API Key 인증 방식 구현

외부 서비스나 서드파티 클라이언트가 안전하게 API를 호출할 수 있도록 하는 API Key 기반 인증 시스템 구현

API Key 인증이 필요한 이유

  • JWT나 세션 인증은 주로 사용자 신원 확인용

  • 서버 대 서버 통신에서는 API Key가 적합

  • 파트너사 서버, 외부 모니터링 시스템, 모바일 앱 백엔드 등에서 사용

APIKey 모델 설계

핵심 포인트:

  • API Key는 평문 저장 금지, 해시값으로 저장

  • prefix와 key를 분리하여 관리

  • is_active 필드로 소프트 삭제 구현

커스텀 인증 클래스 구현

권한 클래스 구현

View에 적용

실무 고려사항

  • HTTPS 필수: API Key는 평문으로 전송되므로 반드시 HTTPS 사용

  • 키 교체 기능: 주기적 키 재발급 및 이전 키 비활성화 기능 구현

  • 세분화된 권한: API Key별로 접근 가능한 범위를 다르게 설정

  • 여러 인증 방식 동시 지원: JWT, 세션 인증과 함께 사용 가능

Last updated