strawberry-django-jwt 사용

이도현·2023년 12월 11일
0

Django 공부

목록 보기
7/8

서론

Strawberry-Django-JWT는 Strawberry GraphQL API에서 JWT 기반 인증을 사용할 수 있도록 하는 확장입니다.

핵심 개념

  • JWT 인증을 사용하여 GraphQL API에 보안 접근을 제공합니다.
  • 사용자 인증과 토큰 관리를 위한 GraphQL 뮤테이션과 쿼리를 제공합니다.

필요성

  1. GraphQL API 보안 강화
    JWT는 GraphQL API에 대한 접근을 보안 강화하는 데 중요한 역할을 합니다. 사용자가 인증된 상태에서만 특정 쿼리나 뮤테이션을 실행할 수 있도록 함으로써, 민감한 데이터의 무단 접근을 방지합니다.

  2. 효율적인 인증 관리
    Strawberry-Django-JWT는 인증 관련 GraphQL 뮤테이션(예: 로그인, 토큰 갱신)을 제공함으로써, 개발자가 별도의 인증 로직을 작성할 필요를 줄여줍니다. 이는 개발 시간을 단축하고 코드의 일관성을 유지하는 데 도움이 됩니다.

  3. 상태 비저장 인증
    JWT 기반 인증은 서버가 각 요청마다 사용자의 인증 상태를 저장할 필요 없이 독립적으로 인증을 처리할 수 있도록 합니다. 이는 서버의 부하를 줄이고 확장성을 증가시킵니다.

Strawberry-Django-JWT 사용 예시

설치

pip install strawberry-django-jwt
  • schema.py에서 JWT 인증 뮤테이션 추가
import strawberry
from strawberry_django_jwt.mutations import ObtainJSONWebToken

@strawberry.type
class Mutation:
    token_auth = ObtainJSONWebToken.Field()

schema = strawberry.Schema(query=Query, mutation=Mutation)
사용:

클라이언트는

mutation { tokenAuth(username: "user", password: "pass") { token } }

와 같은 GraphQL 뮤테이션을 사용하여 JWT를 발급받을 수 있습니다.
발급된 토큰은 이후의 GraphQL 요청에서 인증에 사용됩니다.

Strawberry-Django-JWT의 장단점

장점

  1. GraphQL과의 통합 용이성
    Strawberry GraphQL과의 긴밀한 통합을 통해 GraphQL API에서 JWT 인증을 손쉽게 구현할 수 있습니다.
  2. 사용자 친화적 인증 절차
    사용자가 간단한 GraphQL 뮤테이션을 통해 인증 토큰을 얻고 갱신할 수 있습니다.
  3. 보안성과 확장성
    JWT는 안전하고 확장 가능한 인증 메커니즘을 제공합니다.

단점

  1. 토큰 관리의 복잡성
    JWT는 탈취되거나 노출될 위험이 있으며, 토큰의 안전한 저장과 관리가 필요합니다.
  2. 토큰 무효화 문제
    JWT는 상태 비저장 방식이므로, 로그아웃이나 토큰 무효화 처리가 복잡해질 수 있습니다.
  3. 보안 설정에 대한 이해 필요
    JWT의 보안성은 올바른 구현에 크게 의존합니다. 따라서 보안 측면에서 적절한 설정과 관리가 필요합니다.
profile
좋은 지식 나누어요

0개의 댓글