Узнайте, как создать безопасную систему входа в систему с учетными записями социальных сетей в Django с использованием OAuth.

Социальная аутентификация — это способ подтвердить личность человека через учетную запись в социальной сети вместо использования паролей. В веб-разработке всегда полезно аутентифицировать пользователей без паролей. Таким образом, они могут войти в систему через социальные приложения, такие как Google, Twitter или GitHub.

Включение социальной аутентификации — отличный способ повысить безопасность вашего приложения за счет снижения риска распространенных уязвимостей, связанных с паролями. Это также улучшит взаимодействие с пользователем вашего приложения, поскольку пользователям не нужно будет запоминать много паролей.

Аутентификация пользователя в Django

Django предоставляет разработчикам систему аутентификации по умолчанию. Однако эта система аутентификации использует традиционную аутентификацию, которая включает ручной сбор таких данных, как имя пользователя, адрес электронной почты, пароль, имя и фамилия пользователя.

instagram viewer

По своей конструкции система аутентификации Django очень универсальна и не предоставляет многих функций, используемых сегодня в большинстве систем веб-аутентификации. В дополнение к этому вы захотите использовать сторонние пакеты, такие как Джанго-Аллаут упаковка.

Как включить OAuth в Django

Чтобы аутентифицировать своих пользователей с помощью OAuth в приложении Django, вы можете использовать пакет Django под названием Джанго-Аллаут.

Django Allauth — это пакет, который обеспечивает аутентификацию, регистрацию, управление учетными записями и аутентификацию сторонних (социальных) учетных записей для вашего проекта Django. Следующие шаги помогут вам настроить Django Allauth для вашего проекта Django.

Шаг 1. Установите и настройте Django-Allauth

Если вам еще предстоит это сделать, создать виртуальную среду и установить Джанго-Аллаут через пип:

pip install django-allauth

Обратите внимание, что для его работы вы должны использовать Python 3.5 или новее и Django 2.0 или новее.

Шаг 2. Добавьте необходимые приложения в Django для 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',
]

Вот несколько моментов, на которые следует обратить внимание в отношении некоторых из вышеперечисленных приложений:

  • allauth.socialaccount Приложение позволит пользователям входить в систему через социальные приложения, такие как X (ранее Twitter), Instagram, GitHub и другие.
  • django.contrib.sites app — это встроенная платформа Django, необходимая для Джанго-Аллаут работать. Приложение предоставляет возможность управлять несколькими сайтами и различать их в одном проекте Django. Вы можете понять, как это работает, обратившись к Документация Джанго.

Шаг 3. Определите серверную часть аутентификации для вашего проекта

Следующий шаг — определить, как вы хотите аутентифицировать своих пользователей. Вы можете сделать это, настроив AUTHENTICATION_BACKENDS в вашей settings.py файл. Для Джанго-Аллаут, вам следует добавить следующее:

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

Приведенный выше фрагмент кода определяет два механизма аутентификации:

  1. Первый из них используется по умолчанию в Django. Это позволит пользователю с правами администратора войти в панель администратора независимо от конфигурации django-allauth.
  2. Второй определяет сервер аутентификации для Джанго-Аллаут.

Шаг 4. Добавьте идентификатор своего сайта

В файле настроек вам следует добавить идентификатор вашего сайта. Вот пример:

SITE_ID = 1

По умолчанию существует сайт под названием example.com в админ панели. Вы можете изменить этот сайт или добавить его для себя. В любом случае вам следует войти в панель администратора и перейти к Места приложение.

Чтобы получить идентификатор сайта Django, откройте свой Интерфейс командной строки (CLI) и запустите эту команду:

python manage.py shell

Затем напишите этот скрипт в оболочку Python:

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)

Приведенный выше код выведет имя сайта, а также его идентификатор.

Шаг 5. Настройте URL-адреса

В вашем проекте urls.py файл, настройте шаблон URL для Джанго-Аллаут. Вот как это должно выглядеть:

from django.urls import path, include

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

С помощью этой настройки вы можете запустить сервер разработки и перейти к http://127.0.0.1:8000/accounts/. Если у вас есть ОТЛАЖИВАТЬ установлен в Истинный, вы должны увидеть список доступных шаблонов URL-адресов для Джанго-Аллаут.

Если вы сделали все вышеперечисленное, ваш проект должен быть готов к социальной аутентификации.

Как реализовать вход/регистрацию Google в вашем приложении Django

После настройки Джанго-Аллаут, вы должны быть готовы разрешить вашим пользователям аутентифицироваться с помощью своих социальных учетных записей, таких как Google.

Шаг 1. Зарегистрируйте своего поставщика социальных учетных записей в установленных приложениях.

В вашей settings.py файле, вам следует добавить поставщика социальных учетных записей в INSTALLED_APPS. В данном случае это Google. Другие варианты — Instagram, X и т. д.

INSTALLED_APPS = [


Add your other apps here

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

Шаг 2. Создайте свой идентификатор клиента и секретный ключ в Google

Чтобы выполнить этот шаг, вам необходимо создать учетную запись Google. Если вы это сделали, выполните следующие действия:

  1. Отправляйтесь в Консоль Google Cloud для создания нового проекта. Сначала нажмите на раскрывающийся список, показанный на изображении ниже:
  2. Далее нажмите НОВЫЙ ПРОЕКТ:
  3. Введите имя вашего проекта, затем нажмите кнопку СОЗДАВАТЬ кнопка:
  4. Выбрав проект, нажмите меню гамбургеров. Выбирать API и услуги, затем Реквизиты для входа:
  5. Затем нажмите на опцию, которая говорит НАСТРОЙКА ЭКРАНА СОГЛАСИЯ и выберите Внешний:
  6. На следующей странице введите имя своего приложения и, если необходимо, укажите адрес электронной почты. Вы также можете изучить конфигурации для некоторой настройки. После завершения нажмите СОХРАНИТЬ И ПРОДОЛЖИТЬ.
  7. В меню слева выберите Реквизиты для входа. После этого нажмите на СОЗДАТЬ ДОПОЛНИТЕЛЬНЫЕ ДАННЫЕ и выберите Идентификатор клиента OAuth.
  8. Далее выберите Тип приложения и введите его имя. Для этого урока Тип приложения будет веб приложение.
  9. Затем добавьте URI для Авторизованные источники JavaScript и Авторизованные URI перенаправления. Хост вашего веб-сайта должен быть источником JavaScript, и система будет перенаправлять пользователей на URI перенаправления после аутентификации. URI перенаправления обычно должен содержать ваше-имя-хоста/accounts/google/login/callback/. Для режима разработки это будет: http://127.0.0.1:8000/accounts/google/login/callback/. Нажмите на СОЗДАВАТЬ когда однажды это будет сделано.
  10. После создания учетных данных вы можете скопировать свои ID клиента или Секрет клиента в безопасное место или загрузите их в формате JSON.

Шаг 3. Добавьте свой идентификатор клиента и секретный ключ в свое приложение Django.

После создания необходимых учетных данных перейдите к http://127.0.0.1:8000/admin, выбирать Социальные приложенияи создайте новое социальное приложение. Выполните следующие действия, чтобы создать новое социальное приложение:

  1. Добавьте провайдера. Поставщик относится к приложению, с помощью которого вы аутентифицируете своего пользователя. В данном случае это Google, в другом случае это может быть Snapchat.
  2. Введите имя для вашего нового социального приложения. Убедитесь, что это разумное имя
  3. Вставьте в ID клиента вы скопировали из Google.
  4. Для Секретный ключ, вставьте Секрет клиента вы скопировали из Google.
  5. Ключ Поле не применяется к аутентификации в Google, поэтому игнорируйте его.
  6. Наконец, выберите сайт, с которым будет связано социальное приложение.

Шаг 4. Проверьте свою аутентификацию Google

Выйдите из панели администратора и перейдите к http://127.0.0.1:8000/accounts/login/. Вы увидите возможность войти через Google.

Нажмите на нее, чтобы перенаправить на экран согласия. Далее выберите учетную запись для входа.

После того, как вы выбрали учетную запись, вы будете перенаправлены на http://127.0.0.1:8000/accounts/profile/. Это означает, что ваше приложение работает отлично. Вы можете создавать собственные шаблоны для замены шаблонов по умолчанию.

Улучшение регистрации пользователей с помощью социальной аутентификации в Django

Включение социальной аутентификации — отличный способ помочь вашим пользователям получить удовольствие от регистрации в вашем приложении. Существуют и другие способы включения аутентификации в Django, и вам следует изучить их, чтобы решить, что лучше всего подходит для вашего случая использования.