신원 확인을 위한 대체 수단으로 소셜 인증을 활용하는 것은 최근 몇 년 동안 점점 인기를 얻고 있으며, 특히 기존의 비밀번호 기반 방식에 의존하지 않고 사용자를 인증하는 기능이 매우 유용하다는 것이 입증된 웹 개발 영역에서 더욱 그러합니다. 구글, 트위터, 깃허브와 같은 플랫폼에서 제공하는 소셜 로그인 옵션을 통합하면 개인이 기존 소셜 미디어 계정을 통해 웹사이트와 서비스에 쉽게 액세스할 수 있으므로 개별 사이트마다 고유한 사용자 이름과 비밀번호를 생성하고 기억할 필요가 없습니다.

소셜 인증을 활용하면 애플리케이션의 보안 태세를 크게 강화하여 기존 비밀번호 관행과 관련된 잠재적 위험을 최소화할 수 있습니다. 또한, 이 접근 방식은 개인이 더 이상 수많은 로그인 자격 증명을 기억해야 하는 부담이 없기 때문에 더욱 원활하고 편리한 사용자 경험을 제공합니다.

장고의 사용자 인증

장고 프레임워크에는 개발자 간의 원활한 협업을 지원하는 고유한 인증 메커니즘이 통합되어 있습니다. 그럼에도 불구하고 각 사용자와 관련된 사용자 이름, 이메일 주소, 비밀번호, 이름, 성 등의 정보를 수동으로 수집해야 하는 기존 인증 기술을 사용합니다.

광범위한 기능으로 설계된 Django의 기본 인증 프레임워크에는 최신 웹 인증 시스템에서 흔히 볼 수 있는 특정 고급 기능이 부족할 수 있습니다. 이러한 단점을 보완하기 위해 장고 플랫폼 내에서 사용자 인증에 사용할 수 있는 기능의 범위를 향상시키는 django-allauth 라이브러리와 같은 추가 도구를 사용하는 것이 좋습니다.

장고에서 OAuth를 활성화하는 방법

장고 애플리케이션 내에서 사용자 인증에 OAuth를 사용하려면 ‘django-allauth’로 알려진 장고 라이브러리를 활용할 수 있습니다.

장고 올어쓰를 활용하면 장고 프로젝트 내에서 인증, 등록 및 계정 관리를 효율적으로 처리할 수 있습니다. 이 문서에서는 Django 애플리케이션에서 이 기능을 구현하는 방법에 대한 포괄적인 가이드를 제공합니다.

1단계: Django-Allauth 설치 및 설정

django-allauth를 쉽게 설치하기 위해 가상 환경을 설정하고 pip를 통해 설치에 필요한 단계를 실행하는 것이 좋습니다.

 pip install django-allauth

이 기능을 제대로 사용하려면 Python 버전 3.5 이상 및 Django 버전 2.0 이상을 사용해야 합니다.

2단계: Django-Allauth를 위해 Django에 필수 앱 추가

Django Allauth를 프로젝트의 설정에 통합하려면 먼저 명령줄에서 “pip install django-allauth”를 실행하여 이 패키지를 설치해야 합니다. 그런 다음 프로젝트 폴더 내에 있는 프로젝트의 settings.py 파일로 이동합니다. 여기에서 INSTALLED\_APPS 목록에 다음 애플리케이션을 추가합니다:

 INSTALLED_APPS = [

    """
    Add your other apps here
    """

    # Djang Allauth configuration apps
    'django.contrib.sites',
    'allauth',
    'allauth.account',
    'allauth.socialaccount',
]

요약하면, 앞서 언급한 특정 애플리케이션을 사용할 때 몇 가지 주요 사항을 염두에 두는 것이 중요합니다:

이 글도 확인해 보세요:  Vite로 React 앱을 설정하는 방법

allauth.socialaccount 애플리케이션은 사용자가 X(이전의 트위터), 인스타그램, 깃허브와 같은 인기 소셜 플랫폼을 사용하여 계정을 인증할 수 있는 편리한 수단을 제공합니다.

⭐ django.contrib.sites 앱은 내장된 Django 프레임워크로, django-auth가 작동하는 데 필요합니다. 이 앱은 단일 Django 프로젝트 내에서 여러 사이트를 관리하고 차별화할 수 있는 기능을 제공합니다. 장고 문서 을 참조하면 작동 방식을 이해할 수 있습니다.

3단계: 프로젝트의 인증 백엔드 정의

SSL/TLS 인증서를 사용하여 애플리케이션에 대한 보안 연결을 설정하고 요구 사항에 따라 인증 백엔드를 구성했으면 사용자를 인증할 방법을 결정해야 합니다. 여기에는 ‘settings.py’ 파일 내에서 적절한 구성 매개변수를 설정하는 것이 포함됩니다. 특히, Django Allauth가 제대로 작동하는 데 필요한 구성을 추가해야 합니다.

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

제공된 코드 조각은 애플리케이션 또는 프로그램 내에서 “백엔드”라고 하는 두 가지 개별 사용자 인증 방법을 구현하는 방법을 간략하게 설명합니다. 이러한 인증 메커니즘은 특정 기능이나 리소스에 대한 액세스 권한을 부여하기 전에 사용자의 신원을 확인하고 검증하는 역할을 합니다. 여러 인증 백엔드를 사용하는 것은 무단 액세스 또는 변조로부터 민감한 데이터를 보호하기 위해 강력한 보안 조치가 필요한 소프트웨어 시스템에서 자주 사용됩니다.

기본 옵션으로 알려진 Django에서 사용하는 초기 설정을 통해 관리 사용자는 django-allauth를 통한 구성에 관계없이 관리 대시보드에 대한 액세스 권한을 얻을 수 있습니다.

두 번째 작업은 Django 웹 애플리케이션에서 사용자 인증을 처리하는 데 널리 사용되는 라이브러리인 Django-Allauth에 대한 인증 백엔드를 설정하는 것입니다.

4단계: 사이트 ID 추가

웹사이트를 올바르게 구성하려면 “사이트 ID”라는 고유 식별자를 포함해야 합니다.다음 예는 이를 달성하는 방법을 보여줍니다:

 SITE_ID = 1

관리자 패널의 기본 구성에서는 사이트 관리 인터페이스 내에 “example.com”에 대한 항목이 존재합니다. 사용자는 이 설정을 변경하거나 필요에 따라 추가 사이트를 만들 수 있습니다. 이러한 옵션에 액세스하려면 먼저 계정에 로그인하고 관리자 패널에서 지정된 사이트 애플리케이션으로 이동해야 합니다.

Django 웹사이트의 사이트 식별자를 얻으려면 CLI(명령줄 인터페이스)에 액세스하여 제공된 명령을 실행해야 합니다:

 python manage.py shell

 from django.contrib.sites.models import Site

current_site = Site.objects.get_current()
site_id = current_site.id
site_name = current_site.name
print("Site ID:", site_id)
print("Site Name:", site_name)

앞서 언급한 코드는 해당 웹 페이지의 제목과 식별자로 구성된 출력을 생성해야 합니다.

이 글도 확인해 보세요:  내부에서 REST API 호출을 수행하는 방법 VS 코드

5단계: URL 구성

실제로 Django Allauth를 프로젝트와 통합하기 위해서는 먼저 애플리케이션의 `urls.py` 파일에 새 URL 구성을 추가해야 합니다. 원하는 결과는 다음 형식과 비슷해야 합니다:

 from django.urls import path, include

urlpatterns = [
    # Djang-allauth url pattern
    path('accounts/', include('allauth.urls')),
]

이 구성을 활용하면 개발 서버를 시작하고 웹 브라우저를 통해 에 액세스할 수 있습니다. DEBUG 값이 true로 설정된 경우, django-auth와 관련된 사용 가능한 URL 패턴의 포괄적인 목록이 표시됩니다.

앞서 설명한 단계를 완료했으면 이제 프로젝트가 소셜 인증을 받을 준비가 되었습니다.

Django 앱에서 Google 로그인/가입을 구현하는 방법

Django Allauth를 설치하고 구성한 후, 이제 애플리케이션에서 Google과 같은 인기 있는 소셜 플랫폼을 통해 사용자 인증을 사용할 수 있도록 준비되었습니다.

1단계: 설치된 앱에 소셜 계정 공급자 등록

실제로 `settings.py` 데이터베이스의 구성 매개변수 내에서 통합을 위해 지정된 소셜 미디어 플랫폼을 애플리케이션 구성 요소로 포함시켜야 합니다. 특히, 주어진 예와 관련하여 Google이 선택된 서비스 제공업체로 사용됩니다. 그러나 Instagram 또는 ‘X’로 표시된 기타 호환 가능한 옵션과 같은 대체 선택이 가능할 수 있습니다.

 INSTALLED_APPS = [

    """
    Add your other apps here
    """

    # Social account provider (google)
    'allauth.socialaccount.providers.google',
]

2단계: Google에서 클라이언트 ID 및 비밀 키 생성

이 단계를 진행하기 위해서는 반드시 설정된 Google 계정이 있어야 합니다. 해당 계정이 이미 있는 경우 후속 지침에서 자세한 지침을 참조하시기 바랍니다:

Google 클라우드 콘솔 로 이동하여 새 프로젝트를 생성하세요.먼저 아래 이미지에 표시된 드롭다운을 클릭합니다:

⭐ 다음으로 새 프로젝트를 클릭합니다:

⭐ 프로젝트 이름을 입력한 다음 생성 버튼을 클릭합니다:

⭐ 프로젝트를 선택한 후 햄버거 메뉴를 클릭합니다. API & 서비스를 선택한 다음 자격 증명을 선택합니다:

⭐ 다음으로 동의 화면 구성이라는 옵션을 클릭하고 외부를 선택합니다:

⭐ 다음 페이지에서 앱의 이름을 입력하고 필요한 경우 이메일을 입력합니다. 일부 사용자 지정에 대한 구성을 탐색할 수도 있습니다. 완료했으면 저장 후 계속을 클릭합니다.

⭐ 왼쪽 메뉴에서 자격 증명을 선택합니다. 그런 다음 자격증명 생성을 클릭하고 OAuth 클라이언트 ID를 선택합니다.

⭐ 다음으로 애플리케이션 유형을 선택하고 이름을 입력합니다. 이 튜토리얼의 경우 애플리케이션 유형은 웹 애플리케이션입니다.

⭐ 다음으로, 인증된 자바스크립트 오리진 및 인증된 리디렉션 URI에 대한 URI를 추가합니다. 웹사이트의 호스트는 자바스크립트 오리진이어야 하며, 시스템은 인증 후 사용자를 리디렉션 URI로 리디렉션합니다. 리디렉션 URI에는 일반적으로 귀하의 호스트 이름/계정/구글/로그인/콜백/이 포함되어야 합니다. 개발 모드의 경우 http://127.0.0.1:8000/accounts/google/login/callback/. 완료되면 생성을 클릭합니다.

이 글도 확인해 보세요:  Nextra를 사용하여 Next.js로 기술 문서 사이트 구축하기

⭐ 자격 증명을 생성한 후 클라이언트 ID 또는 클라이언트 비밀 번호를 안전한 곳에 복사하거나 JSON 파일로 다운로드할 수 있습니다.

3단계: Django 앱에 클라이언트 ID 및 비밀 키 추가

필요한 로그인 정보를 설정했으면 웹 브라우저에서 을 방문하세요. 이 목적지에 도착하면 사용 가능한 옵션에서 “소셜 애플리케이션”을 선택하고 새로운 소셜 애플리케이션 생성을 시작하세요. 이 작업을 수행하려면 아래에 설명된 순차적인 단계를 따르기만 하면 됩니다:

사용자가 자격 증명을 인증하는 주체로 서비스 제공업체를 통합합니다. 여기에는 Google이나 Snapchat과 같은 다양한 플랫폼이 포함될 수 있습니다.

물론 기꺼이 도와드리겠습니다! 다음은 새 소셜 앱의 세련되고 적절한 이름에 대한 몇 가지 제안입니다: 1. ConverSphere – 이 이름은 사람들을 하나의 가상 공간에 모아 전 세계 곳곳에서 서로 연결하고 상호 작용할 수 있도록 한다는 아이디어를 전달합니다. 또한 현대적이고 기술에 정통한 느낌을 줍니다. 2. 사교계 허브 – 이 이름은 같은 생각을 가진 사람들이 모여 생각, 아이디어, 경험을 공유할 수 있는 독점적인 클럽 또는 커뮤니티를 의미합니다.’허브’라는 단어는 중앙 집중화와 편리함을 의미하며, ‘사교계’는 화려함과 세련됨을 더합니다. 3. Connectify – 이 이름은 앱의 목적을 강조합니다.

계속하려면 클라이언트 ID를 입력하세요.

구글 클라우드 콘솔에서 클라이언트의 비밀 키를 사용하려면 이전에 추출하여 저장한 클라이언트 비밀 키를 친절하게 입력하세요.

Google과 같은 신뢰할 수 있는 타사 서비스 제공업체를 통해 자신의 신원을 확인하는 과정을 인증이라고 합니다. 이 맥락에서 ‘키’라는 용어는 관련성이 없으며 무시해도 됩니다.

궁극적으로 소셜 미디어 도구를 통합할 플랫폼을 선택합니다.

4단계: Google 인증 테스트

관리 인터페이스에서 로그아웃한 다음 로 이동하세요. 이 페이지에서 Google을 통해 로그인할 수 있는 가능성을 발견할 수 있습니다.

앞서 언급한 링크를 클릭하면 동의 화면으로 이동합니다. 그런 다음 로그인 자격 증명을 인증할 계정을 선택하세요.

지정된 계정을 선택하면 로 이동합니다. 이러한 리디렉션은 애플리케이션이 잘 작동한다는 증거로 사용됩니다. 표준 옵션을 대체하는 개인화된 레이아웃을 생성할 수도 있습니다.

Django에서 소셜 인증으로 사용자 등록 향상

소셜 인증을 통합하면 애플리케이션 내에서 사용자 등록 경험을 크게 향상시킬 수 있습니다. 동시에, 특정 요구 사항에 따라 적합성을 결정하기 위해 탐색할 가치가 있는 대체 인증 방법이 Django에 존재합니다.

By 김민수

안드로이드, 서버 개발을 시작으로 여러 분야를 넘나들고 있는 풀스택(Full-stack) 개발자입니다. 오픈소스 기술과 혁신에 큰 관심을 가지고 있고, 보다 많은 사람이 기술을 통해 꿈꾸던 일을 실현하도록 돕기를 희망하고 있습니다.