Как стать автором
Обновить

Как в 2025 году в Django реализовать аутентификацию через Google

Время на прочтение3 мин
Количество просмотров1.2K

Работая над Django-проектом, мы с подписчиками моего канала решили настроить вход пользователя через этот популярный сервис и оказалось, что настройки, которые мы применяли несколько лет назад, теперь не работают, и нужно восстановить новый рабочий алгоритм. Он получился и выглядит следующим образом.

ВЫПОЛНЯЕМ УСТАНОВКУ БИБЛИОТЕКИ АУТЕНТИФИКАЦИИ И НАСТРОЙКУ ПРОЕКТА

Аутентификация через сторонние сервисы осуществляется на базе протокола OAuth 2.0, который поддерживается библиотекой Python Social Auth Django.

Для начала нам нужно установить библиотеку social-auth-core и дополнительную библиотеку social-auth-app-django для интеграции этой системы регистрации/аутентификации в Django. Оба компонента мы указали в списке зависимостей проекта в файле requirements.txt:

social-auth-app-django==5.0.0
social-auth-core==4.1.0

Зависимости привычным путем устанавливаем из терминала в активированное виртуальное окружение командой:

pip install -r requirements.txt

Подключим установленное приложение к проекту черещ модуль settings.py:

INSTALLED_APPS = [
    …
    'social_django',
]

Поскольку представленная библиотека поддерживает собственные таблицы для работы с аутентификацией пользователя, необходимо выполнить соответствующие миграции:

python manage.py migrate

Результат:

Если учетная запись администратора у вас отсутствует, можно создать админа командой (указав в качестве логина и пароля, например, строку admin):

python manage.py createsuperuser

Далее необходимо настроить бэкенды аутентификации. Для этого в модуль settings.py добавим константу со значением:

AUTHENTICATION_BACKENDS = (
    'social_core.backends.google.GoogleOAuth2',
    'django.contrib.auth.backends.ModelBackend',
)

Параметр:

'social_core.backends.google.GoogleOAuth2'

Соответствует бэкенду аутентификации посредством Google.

Параметр:

'django.contrib.auth.backends.ModelBackend',

Представляет собой бэкенд привычной аутентификации через классические логин и пароль.

Последний параметр обязательно нужно добавить, иначе исчезнет возможность входа по логину и паролю.

Кроме того, нужно правильно указать настройку шаблонизации в модуле settings.py:

TEMPLATES = [
    {
     …
        'OPTIONS': {
            'context_processors': [
            …                            
            'social_django.context_processors.backends',
	        'social_django.context_processors.login_redirect',
            ],
        },
    },
]

Теперь требуется подключить соответствующие служебные маршруты для аутентификации.

Добавим в модуль urls.py главного пакета проекта такую привязку:

urlpatterns = [
    …
    path('oauth/', include('social_django.urls', namespace='social')),
]

Также добавим в модуль settings.py константы:

SOCIAL_AUTH_URL_NAMESPACE = 'social'
LOGIN_REDIRECT_URL = '/'

Далее добавим в интерфейс проекта кнопку для аутентификации через Google.

Добавим в шаблон login.html приложения authapp:

<button class="btn btn-round form-control">
    <a href="{% url 'social:begin' 'google-oauth2' %}">
        Вход через Google
    </a>
</button>

ВЫПОЛНЯЕМ НАСТРОЙКУ КЛЮЧА И СЕКРЕТА ДЛЯ АУТЕНТИФИКАЦИИ

Перейдем по ссылке и зарегистрируем приложение:

Перейдем по ссылке и создадим идентификатор клиента OAuth:

Нажимаем CONFIGURE CONSENT SCREEN:

Нажимаем Get Started:

Вводим название приложения и почту:

Далее выбираем External и подтверждаем:

Далее переходим вновь в раздел Credentials:

Переходим к созданию приложения:

Выбираем создание веб приложения, указываем имя и адрес перенаправления http://127.0.0.1:8000/oauth/complete/google-oauth2/:

Теперь копируем ключ и секрет:

И укажем их в модуле settings.py:

SOCIAL_AUTH_GOOGLE_OAUTH2_KEY = '847071034656-qeeuus2sh5u6qs3vtodvven2u9pq2c36.apps.googleusercontent.com'

SOCIAL_AUTH_GOOGLE_OAUTH2_SECRET = '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'

ВЫПОЛНЯЕМ ЗАПУСК

Если сейчас выполнить запуск нашего проекта:

python manage.py runserver

И перейти на страницу аутентификации, можно увидеть на форме аутентификации новую кнопку.

Теперь можно успешно выполнить вход через Google.

P.S. Я создал небольшой Django-проект, на котором вы можете проверить работоспособность механизма. Скачать его можно здесь, но обязательно прочитайте файл readme для избежания ошибок. Успешной настройки аутентификации пользователя через Google! А в следующей статье рассмотрим решение задачи заполнения профиля пользователя в Django-проекте данными из учетной записи в Google.

Теги:
Хабы:
0
Комментарии6

Публикации

Работа

Data Scientist
70 вакансий

Ближайшие события