Django REST Framework에서 소셜 로그인 구현하기

김재섭·2025년 2월 6일
post-thumbnail

Django REST Framework에서 소셜 로그인 구현하기

🔹 소셜 로그인이란?

소셜 로그인(Social Login)은 사용자가 별도의 회원가입 없이 Google, Kakao, Facebook 같은 외부 서비스 계정을 이용해 로그인하는 방식이다.
Django에서는 dj-rest-authdjango-allauth를 사용하면 쉽게 OAuth 로그인을 구현할 수 있다.

이번 글에서는 Kakao, Google 로그인을 Django REST Framework(DRF)에 적용하는 방법을 알아보자.


1️⃣ 라이브러리 설치

소셜 로그인을 구현하려면 dj-rest-authdjango-allauth 패키지가 필요하다.
아래 명령어로 설치하자.

pip install dj-rest-auth
pip install django-allauth

이제 Django 앱 설정을 수정하자.


2️⃣ Django 설정 (settings.py)

INSTALLED_APPS에 패키지 추가

INSTALLED_APPS = [
    ...
    'rest_framework',
    'rest_framework.authtoken',  # dj-rest-auth에서 필요
    'dj_rest_auth',
    'allauth',
    'allauth.account',
    'allauth.socialaccount',
    'allauth.socialaccount.providers.google',  # Google 로그인
    'allauth.socialaccount.providers.kakao',  # Kakao 로그인
]

여기서 사용하고 싶은 OAuth 제공자(provider)를 추가하면 된다.
이번 글에서는 Google, Kakao을 적용할 거라 관련된 provider를 추가했다.


3️⃣ 인증 백엔드 설정

소셜 로그인을 사용하려면 AUTHENTICATION_BACKENDSallauth 관련 설정을 추가해야 한다.

AUTHENTICATION_BACKENDS = [
    'django.contrib.auth.backends.ModelBackend',  
    'allauth.account.auth_backends.AuthenticationBackend',  
]

이제 Django가 django-allauth를 통해 소셜 로그인을 처리할 수 있게 된다.


4️⃣ URL 설정

이제 dj-rest-auth에서 제공하는 기본 URL을 추가하자.

from django.urls import path, include

urlpatterns = [
    path('auth/', include('dj_rest_auth.urls')),  # 기본 로그인/회원가입
    path('auth/social/', include('dj_rest_auth.social_urls')),  # 소셜 로그인
]

이제 /auth/social/ 경로에서 소셜 로그인 API를 사용할 수 있다!


5️⃣ OAuth 인증 정보 설정

이제 Google, Kakao, Facebook에서 발급한 Client IDClient Secret을 Django에 등록해야 한다.
관리자 페이지에서 직접 입력하거나, settings.py에서 기본값을 지정할 수 있다.

SOCIALACCOUNT_PROVIDERS = {
    'google': {
        'APP': {
            'client_id': 'GOOGLE_CLIENT_ID',
            'secret': 'GOOGLE_CLIENT_SECRET',
        }
    },
    'kakao': {
        'APP': {
            'client_id': 'KAKAO_REST_API_KEY',
            'secret': '',
        }
    },
}

여기서 client_idsecret 값은 각 플랫폼의 OAuth 개발자 콘솔에서 발급받아야 한다.


6️⃣ OAuth 로그인 테스트

이제 실제로 로그인 요청을 보내보자.

✅ Google 로그인 요청

Google 로그인은 다음과 같은 API 요청을 사용한다.

POST /auth/social/login/
Content-Type: application/json

{
  "provider": "google",
  "access_token": "GOOGLE_OAUTH_ACCESS_TOKEN"
}

여기서 "access_token" 값은 클라이언트(React, Vue 등)에서 Google 로그인을 통해 받은 OAuth 토큰을 넣어야 한다.

✅ Kakao 로그인 요청

POST /auth/social/login/
Content-Type: application/json

{
  "provider": "kakao",
  "access_token": "KAKAO_OAUTH_ACCESS_TOKEN"
}

성공적으로 로그인하면 JWT 토큰이 발급된다! 🎉


7️⃣ 소셜 로그인 후 자동 회원가입

소셜 로그인 시 자동으로 회원가입하도록 만들 수도 있다.
이 기능은 dj-rest-auth에서 기본적으로 제공한다.

settings.py에 아래 옵션을 추가하자.

REST_AUTH_REGISTER_ON_SOCIAL_LOGIN = True

이렇게 하면 소셜 로그인으로 처음 인증된 사용자는 자동으로 회원가입이 진행된다.


✅ 정리

  • dj-rest-authdjango-allauth를 사용하면 소셜 로그인을 쉽게 구현할 수 있다.
  • Google, Kakao, Facebook OAuth 로그인을 설정하고, 클라이언트에서 받은 액세스 토큰을 이용해 인증한다.
  • /auth/social/login/ 엔드포인트를 통해 소셜 로그인 API를 사용할 수 있다.
  • 소셜 로그인 후 자동 회원가입을 활성화하면 추가적인 회원가입 로직이 필요 없다.

소셜 로그인은 JWT 기반 인증과 함께 사용하면 강력한 인증 시스템을 구축할 수 있다!
다음 글에서는 OAuth 토큰을 안전하게 저장하는 방법과 로그아웃 처리에 대해 다뤄보자.

profile
Upward Developer

0개의 댓글