Naučte se, jak vytvořit bezpečný přihlašovací systém s účty sociálních médií v Django pomocí OAuth.

Sociální ověřování je způsob, jak potvrdit identitu osoby prostřednictvím účtu na sociální síti namísto použití hesel. Při vývoji webu je vždy užitečné autentizovat uživatele bez hesla. Tímto způsobem se mohou přihlásit prostřednictvím sociálních aplikací, jako je Google, Twitter nebo GitHub.

Povolení sociálního ověřování je skvělý způsob, jak zvýšit zabezpečení vaší aplikace snížením rizika běžných zranitelností souvisejících s hesly. Zlepší to také uživatelský dojem z vaší aplikace, protože uživatelé si nebudou muset pamatovat mnoho hesel.

Ověření uživatele v Django

Django poskytuje výchozí autentizační systém, se kterým mohou vývojáři pracovat. Tento autentizační systém však využívá tradiční autentizaci, která zahrnuje ruční sběr dat, jako je uživatelské jméno, e-mail, heslo, jméno a příjmení uživatele.

Podle návrhu je autentizační systém Django velmi obecný a neposkytuje mnoho funkcí používaných ve většině dnešních webových autentizačních systémů. Chcete-li to doplnit, budete chtít použít balíčky třetích stran, jako je např

django-allauth balík.

Jak povolit OAuth v Django

K ověření vašich uživatelů pomocí OAuth v aplikaci Django můžete použít balíček Django s názvem django-allauth.

Django Allauth je balíček, který se stará o ověřování, registraci, správu účtu a ověřování účtu třetích stran (sociálních) pro váš projekt Django. Následující kroky vás dovedou k nastavení Django Allauth pro váš projekt Django.

Krok 1: Nainstalujte a nastavte Django-Allauth

Pokud tak ještě neučiníte, vytvořit virtuální prostředí a nainstalovat django-allauth přes pip:

pip install django-allauth

Aby to fungovalo, musíte používat Python 3.5 nebo vyšší a Django 2.0 nebo vyšší.

Krok 2: Přidejte požadované aplikace do Django pro Django-Allauth

Po instalaci django-allauth, otevři tvůj settings.py a přidejte do svého souboru následující aplikace INSTALLED_APPS seznam:

INSTALLED_APPS = [


Add your other apps here

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

Zde je několik bodů k poznámce o některých z výše uvedených aplikací:

  • The allauth.socialaccount aplikace umožní uživatelům přihlásit se prostřednictvím sociálních aplikací, jako je X (dříve Twitter), Instagram, GitHub a další.
  • The django.contrib.sites aplikace je vestavěný rámec Django, který je nezbytný pro django-allauth pracovat. Aplikace poskytuje možnost spravovat a rozlišovat více stránek v rámci jednoho projektu Django. Můžete pochopit, jak to funguje, odkazem na Dokumentace Django.

Krok 3: Definujte autentizační backendy pro váš projekt

Dalším krokem je definovat, jak chcete své uživatele ověřovat. Můžete to udělat konfigurací AUTHENTICATION_BACKENDS ve vašem settings.py soubor. Pro django-allauth, měli byste přidat tyto:

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

Výše uvedený fragment kódu definuje dva ověřovací backendy:

  1. První je výchozí, který používá Django. To umožní administrátorovi přihlásit se do administrátorského panelu bez ohledu na konfiguraci django-allauth.
  2. Druhý definuje autentizační backend pro django-allauth.

Krok 4: Přidejte ID svého webu

V souboru nastavení byste měli přidat ID svého webu. Zde je příklad:

SITE_ID = 1

Ve výchozím nastavení existuje stránka tzv example.com v administračním panelu. Můžete se rozhodnout tento web upravit nebo přidat pro sebe. V obou případech byste se měli přihlásit do administrátorského panelu a přejít na Weby aplikace.

Chcete-li získat ID webu pro web Django, otevřete svůj Rozhraní příkazového řádku (CLI) a spusťte tento příkaz:

python manage.py shell

Dále napište tento skript do shellu Pythonu:

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)

Výše uvedený kód vytiskne název webu i jeho ID.

Krok 5: Nakonfigurujte své adresy URL

Ve vašem projektu urls.py soubor, nakonfigurujte vzor adresy URL pro django-allauth. Takto by to mělo vypadat:

from django.urls import path, include

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

S tímto nastavením můžete spustit vývojový server a přejít na něj http://127.0.0.1:8000/accounts/. Pokud máte LADIT nastaven na Skutečný, měli byste vidět seznam dostupných vzorů adres URL pro django-allauth.

Pokud jste provedli výše uvedené, váš projekt by měl být připraven pro sociální ověření.

Jak implementovat přihlášení/registraci Google do vaší aplikace Django

Po nastavení django-allauth, měli byste být připraveni umožnit svým uživatelům, aby se ověřili pomocí svých sociálních účtů, jako je Google.

Krok 1: Zaregistrujte svého poskytovatele sociálního účtu ve vašich nainstalovaných aplikacích

Ve vašem settings.py měli byste přidat poskytovatele sociálního účtu INSTALLED_APPS. V tomto případě je to Google. Další možnosti jsou Instagram, X atd.

INSTALLED_APPS = [


Add your other apps here

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

Krok 2: Vytvořte si na Googlu své ID klienta a tajný klíč

K dokončení tohoto kroku musíte mít vytvořený účet Google. Pokud jste tak učinili, postupujte podle následujících kroků:

  1. Zamiřte k Konzole Google Cloud k vytvoření nového projektu. Nejprve klikněte na rozevírací seznam zobrazený na obrázku níže:
  2. Dále klikněte na NOVÝ PROJEKT:
  3. Zadejte název projektu a klikněte na VYTVOŘIT knoflík:
  4. S vybraným projektem klikněte na hamburgerové menu. Vybrat API a služby, pak Pověření:
  5. Dále klikněte na možnost, která říká KONFIGUROVAT OBRAZOVKU SOUHLASU a vyberte Externí:
  6. Na další stránce zadejte název aplikace a v případě potřeby uveďte e-mail. Můžete také prozkoumat konfigurace pro určité úpravy. Po dokončení klikněte na ULOŽIT A POKRAČOVAT.
  7. V nabídce vlevo vyberte Pověření. Poté klikněte na VYTVOŘTE PŘIHLÁŠKY a vyberte ID klienta OAuth.
  8. Dále vyberte Typ aplikace a zadejte stejný název. Pro tento tutoriál je Typ aplikace bude webová aplikace.
  9. Dále přidejte URI pro Autorizovaný původ JavaScriptu a Identifikátory URI autorizovaného přesměrování. Hostitel vašeho webu by měl být původem JavaScript a systém po ověření přesměruje uživatele na URI přesměrování. Identifikátor URI přesměrování by měl obvykle obsahovat jméno-vašeho-hostitele/accounts/google/login/zpětné volání/. Pro vývojový režim to bude: http://127.0.0.1:8000/accounts/google/login/callback/. Klikněte na VYTVOŘIT když jednou hotovo.
  10. Po vytvoření přihlašovacích údajů můžete zkopírovat své ID klienta nebo Tajemství klienta na bezpečné místo nebo si je stáhněte jako soubory JSON.

Krok 3: Přidejte své ID klienta a tajný klíč do aplikace Django

Po vytvoření potřebných přihlašovacích údajů přejděte na http://127.0.0.1:8000/admin, vyberte Sociální aplikacea vytvořit novou sociální aplikaci. Chcete-li vytvořit novou sociální aplikaci, postupujte takto:

  1. Přidejte poskytovatele. Poskytovatel odkazuje na aplikaci, pomocí které ověřujete uživatele. V tomto případě je to Google, v jiném případě to může být Snapchat.
  2. Zadejte název své nové sociální aplikace. Ujistěte se, že je to rozumné jméno
  3. Vložit do ID klienta jste zkopírovali z Googlu.
  4. Pro Tajný klíč, vložte do Tajemství klienta jste zkopírovali z Googlu.
  5. The Klíč pole se nevztahuje na ověřování u Google, takže ho ignorujte.
  6. Nakonec vyberte web, ke kterému chcete sociální aplikaci přidružit.

Krok 4: Otestujte své ověření Google

Odhlaste se z panelu administrátora a přejděte na http://127.0.0.1:8000/accounts/login/. Zobrazí se možnost přihlášení přes Google.

Kliknutím na něj přesměrujete na obrazovku souhlasu. Dále vyberte účet, pomocí kterého se chcete přihlásit.

Jakmile si vyberete účet, budete přesměrováni na http://127.0.0.1:8000/accounts/profile/. To znamená, že vaše aplikace funguje perfektně. Můžete vytvořit vlastní šablony, které nahradí výchozí.

Vylepšení registrace uživatelů pomocí sociální autentizace v Django

Povolení sociálního ověřování je skvělý způsob, jak uživatelům pomoci s registrací vaší aplikace. Existují další způsoby, jak povolit ověřování v Django, a měli byste je prozkoumat, abyste se rozhodli, co je pro váš případ použití nejlepší.