Научете как да създадете защитена система за влизане с акаунти в социални медии в Django, използвайки OAuth.
Социалното удостоверяване е начин за потвърждаване на самоличността на човек чрез социален акаунт, вместо да използвате пароли. В уеб разработката винаги е полезно да се удостоверяват потребители без пароли. По този начин те могат да влизат чрез социални приложения като Google, Twitter или GitHub.
Активирането на социално удостоверяване е чудесен начин да подобрите сигурността на вашето приложение чрез намаляване на риска от често срещани уязвимости, свързани с пароли. Това също ще подобри потребителското изживяване на вашето приложение, тъй като потребителите няма да трябва да запомнят много пароли.
Удостоверяване на потребителя в Django
Django предоставя система за удостоверяване по подразбиране, с която разработчиците да работят. Тази система за удостоверяване обаче използва традиционно удостоверяване, което включва ръчно събиране на данни като потребителско име, имейл, парола, собствено име и фамилия на потребителя.
По дизайн системата за удостоверяване на Django е много обща и не предоставя много функции, използвани в повечето системи за уеб удостоверяване днес. За да допълните това, ще искате да използвате пакети на трети страни като django-allauth пакет.
Как да активирате OAuth в Django
За да удостоверите вашите потребители с помощта на OAuth в приложение на Django, можете да използвате пакет на Django, наречен django-allauth.
Django Allauth е пакет, който обработва удостоверяване, регистрация, управление на акаунти и удостоверяване на трети (социални) акаунти за вашия Django проект. Следните стъпки ще ви насочат към настройка на Django Allauth за вашия Django проект.
Стъпка 1: Инсталирайте и настройте Django-Allauth
Ако тепърва ще го правите, създайте виртуална среда и инсталирайте django-allauth чрез pip:
pip install django-allauth
Обърнете внимание, че трябва да използвате Python 3.5 или по-нова версия и Django 2.0 или по-нова версия, за да работи.
Стъпка 2: Добавете необходимите приложения към Django за Django-Allauth
След инсталиране 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',
]
Ето някои неща, които трябва да отбележите относно някои от горните приложения:
- The allauth.socialaccount приложението ще позволи на потребителите да влизат чрез социални приложения като X (по-рано Twitter), Instagram, GitHub и други.
- The django.contrib.sites е вградена рамка на Django, която е необходима за django-allauth да работиш. Приложението предоставя възможност за управление и разграничаване на множество сайтове в рамките на един проект на Django. Можете да разберете как работи, като се обърнете към Документация на Django.
Стъпка 3: Дефинирайте бекенда за удостоверяване за вашия проект
Следващата стъпка е да определите как искате да удостоверявате вашите потребители. Можете да направите това, като конфигурирате AUTHENTICATION_BACKENDS във вашия settings.py файл. За django-allauth, трябва да добавите тези:
AUTHENTICATION_BACKENDS = [
'django.contrib.auth.backends.ModelBackend',
'allauth.account.auth_backends.AuthenticationBackend',
]
Кодовият фрагмент по-горе дефинира два бекенда за удостоверяване:
- Първият е стандартният, използван от Django. Това ще позволи на администраторския потребител да влезе в административния панел, независимо от конфигурацията на django-allauth.
- Вторият дефинира бекенда за удостоверяване django-allauth.
Стъпка 4: Добавете ID на вашия сайт
Във вашия файл с настройки трябва да добавите ID за вашия сайт. Ето един пример:
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 модела за django-allauth. Ето как трябва да изглежда:
from django.urls import path, include
urlpatterns = [
# Djang-allauth url pattern
path('accounts/', include('allauth.urls')),
]
С тази настройка можете да стартирате своя сървър за разработка и да отидете до http://127.0.0.1:8000/accounts/. Ако имате ОТСТРАНЯВАНЕ НА ГРЕШКИ настроен на Вярно, трябва да видите списък с налични URL модели за django-allauth.
Ако сте направили горното, вашият проект трябва да е готов за социално удостоверяване.
Как да внедрите вход/регистрация в Google във вашето приложение Django
След настройката django-allauth, трябва да сте готови да позволите на вашите потребители да се удостоверяват с техните социални акаунти като 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. Ако сте го направили, изпълнете следните стъпки:
- Насочете се към Google Cloud конзола за създаване на нов проект. Първо щракнете върху падащото меню, показано на изображението по-долу:
- След това щракнете върху НОВ ПРОЕКТ:
- Въведете име за вашия проект, след което щракнете върху СЪЗДАВАЙТЕ бутон:
- С избрания от вас проект щракнете върху менюто за хамбургери. Изберете API и услуги, тогава Акредитивни писма:
- След това щракнете върху опцията, която казва КОНФИГУРИРАЙТЕ ЕКРАНА ЗА СЪГЛАСИЕ и изберете Външен:
- На следващата страница въведете име за вашето приложение и включете имейл, където е необходимо. Можете също така да разгледате конфигурациите за някои персонализации. След като сте готови, щракнете върху ЗАПАЗИ И ПРОДЪЛЖИ.
- В менюто отляво изберете Акредитивни писма. След това щракнете върху СЪЗДАВАЙТЕ ИДЕНТИФИКАЦИИ и изберете OAuth клиентски идентификатор.
- След това изберете Тип приложение и въведете име за същото. За този урок, Тип приложение ще бъде Уеб приложение.
- След това добавете URI за Оторизирани източници на JavaScript и Оторизирани URI адреси за пренасочване. Хостът на вашия уебсайт трябва да бъде източникът на JavaScript и системата ще пренасочи потребителите към URI адреса за пренасочване след удостоверяване. URI адресът за пренасочване обикновено трябва да съдържа your-host-name/accounts/google/login/callback/. За режим на разработка ще бъде: http://127.0.0.1:8000/accounts/google/login/callback/. Кликнете върху СЪЗДАВАЙТЕ когато веднъж е направено.
- След като създадете идентификационните данни, можете да копирате вашите ID на клиента или Тайна на клиента на безопасно място или ги изтеглете като JSON файлове.
Стъпка 3: Добавете своя клиентски идентификатор и таен ключ към вашето приложение Django
След като създадете необходимите идентификационни данни, отидете до http://127.0.0.1:8000/admin, изберете Социални приложенияи създайте ново социално приложение. Следвайте тези стъпки, за да създадете ново социално приложение:
- Добавяне на доставчик. Доставчикът се отнася до приложението, с което удостоверявате своя потребител. В този случай това е Google, в друг случай може да е Snapchat.
- Въведете име за вашето ново социално приложение. Уверете се, че това е разумно име
- Поставете в ID на клиента сте копирали от Google.
- За Таен ключ, поставете в Тайна на клиента сте копирали от Google.
- The Ключ полето не се прилага за удостоверяване с Google, така че го игнорирайте.
- Накрая изберете сайт, с който да свържете социалното приложение.
Стъпка 4: Тествайте вашето Google удостоверяване
Излезте от администраторския си панел и отидете до http://127.0.0.1:8000/accounts/login/. Ще видите опция за влизане през Google.
Кликнете върху него, за да пренасочите към екрана за съгласие. След това изберете акаунт, с който да влезете.
След като изберете акаунт, ще бъдете пренасочени към http://127.0.0.1:8000/accounts/profile/. Това означава, че приложението ви работи перфектно. Можете да създадете персонализирани шаблони, за да замените тези по подразбиране.
Подобряване на потребителската регистрация със социално удостоверяване в Django
Активирането на социално удостоверяване е чудесен начин да помогнете на вашите потребители да се регистрират за вашето приложение. Има и други начини за активиране на удостоверяване в Django и трябва да ги проучите, за да решите кой е най-добрият за вашия случай на употреба.