Zistite, ako vytvoriť bezpečný prihlasovací systém s účtami sociálnych médií v Django pomocou OAuth.

Sociálna autentifikácia je spôsob, ako potvrdiť identitu osoby prostredníctvom sociálneho účtu namiesto použitia hesiel. Pri vývoji webu je vždy užitočné overovať používateľov bez hesla. Takto sa môžu prihlásiť cez sociálne aplikácie ako Google, Twitter alebo GitHub.

Povolenie sociálnej autentifikácie je skvelý spôsob, ako zvýšiť bezpečnosť vašej aplikácie znížením rizika bežných zraniteľností súvisiacich s heslom. Zlepší to aj používateľský zážitok z vašej aplikácie, pretože používatelia si nebudú musieť pamätať veľa hesiel.

Overenie používateľa v Django

Django poskytuje predvolený systém overovania, s ktorým môžu vývojári pracovať. Tento autentifikačný systém však využíva tradičnú autentifikáciu, ktorá zahŕňa manuálne zhromažďovanie údajov, ako je používateľské meno, e-mail, heslo, meno a priezvisko používateľa.

Podľa návrhu je autentifikačný systém Django veľmi všeobecný a neposkytuje veľa funkcií používaných vo väčšine súčasných webových autentifikačných systémov. Na doplnenie tohto budete chcieť použiť balíky tretích strán, ako je napr

instagram viewer
django-allauth balík.

Ako povoliť OAuth v Django

Na overenie používateľov pomocou protokolu OAuth v aplikácii Django môžete použiť balík Django s názvom django-allauth.

Django Allauth je balík, ktorý sa stará o overenie, registráciu, správu účtu a overenie účtu tretích strán (sociálne) pre váš projekt Django. Nasledujúce kroky vás povedú k nastaveniu Django Allauth pre váš projekt Django.

Krok 1: Nainštalujte a nastavte Django-Allauth

Ak to ešte máte urobiť, vytvoriť virtuálne prostredie a nainštalovať django-allauth cez pip:

pip install django-allauth

Všimnite si, že musíte používať Python 3.5 alebo vyšší a Django 2.0 alebo vyšší, aby to fungovalo.

Krok 2: Pridajte požadované aplikácie do Django pre Django-Allauth

Po inštalácii django-allauth, otvor tvoj settings.py a pridajte do svojho súboru nasledujúce aplikácie INSTALLED_APPS zoznam:

INSTALLED_APPS = [


Add your other apps here

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

Tu je niekoľko bodov, ktoré je potrebné poznamenať o niektorých z vyššie uvedených aplikácií:

  • The allauth.socialaccount aplikácia umožní používateľom prihlásiť sa prostredníctvom sociálnych aplikácií, ako sú X (predtým Twitter), Instagram, GitHub a ďalšie.
  • The django.contrib.sites app je vstavaný rámec Django, ktorý je potrebný pre django-allauth pracovať. Aplikácia poskytuje možnosť spravovať a rozlišovať viacero lokalít v rámci jedného projektu Django. Môžete pochopiť, ako to funguje, odkazom na Dokumentácia Django.

Krok 3: Definujte backendy overovania pre váš projekt

Ďalším krokom je definovanie spôsobu, akým chcete overovať svojich používateľov. Môžete to urobiť konfiguráciou AUTHENTICATION_BACKENDS v tvojom settings.py súbor. Pre django-allauth, mali by ste pridať tieto:

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

Útržok kódu uvedený vyššie definuje dva servery overenia:

  1. Prvý z nich je predvolený, ktorý používa Django. To umožní správcovi prihlásiť sa do administračného panela bez ohľadu na konfiguráciu django-allauth.
  2. Druhý definuje autentizačný backend pre django-allauth.

Krok 4: Pridajte ID svojho webu

V súbore s nastaveniami by ste mali pridať ID vašej lokality. Tu je príklad:

SITE_ID = 1

Štandardne existuje stránka tzv example.com v správcovskom paneli. Môžete sa rozhodnúť upraviť túto stránku alebo si ju pridať pre seba. V oboch prípadoch by ste sa mali prihlásiť do administračného panela a prejsť na Stránky aplikácie.

Ak chcete získať ID lokality pre lokalitu Django, otvorte svoj Rozhranie príkazového riadka (CLI) a spustite tento príkaz:

python manage.py shell

Ďalej napíš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)

Vyššie uvedený kód vytlačí názov stránky, ako aj jej ID.

Krok 5: Nakonfigurujte svoje adresy URL

Vo vašom projekte urls.py nakonfigurujte vzor adresy URL pre django-allauth. Takto by to malo vyzerať:

from django.urls import path, include

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

S týmto nastavením môžete spustiť svoj vývojový server a prejsť naň http://127.0.0.1:8000/accounts/. Ak máte DEBUG nastavený na Pravda, mali by ste vidieť zoznam dostupných vzorov adries URL pre django-allauth.

Ak ste urobili vyššie uvedené, váš projekt by mal byť pripravený na sociálne overenie.

Ako implementovať prihlásenie / registráciu Google vo vašej aplikácii Django

Po nastavení django-allauth, mali by ste byť pripravení nechať svojich používateľov overiť sa pomocou svojich sociálnych účtov, ako je napríklad Google.

Krok 1: Zaregistrujte svojho poskytovateľa sociálneho účtu vo svojich nainštalovaných aplikáciách

V tvojom settings.py by ste mali pridať poskytovateľa sociálneho účtu INSTALLED_APPS. V tomto prípade je to Google. Ďalšie možnosti sú Instagram, X atď.

INSTALLED_APPS = [


Add your other apps here

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

Krok 2: Vytvorte si svoje ID klienta a tajný kľúč na Googli

Na dokončenie tohto kroku musíte mať vytvorený účet Google. Ak ste tak urobili, postupujte podľa nasledujúcich krokov:

  1. Zamierte k Konzola Google Cloud na vytvorenie nového projektu. Najprv kliknite na rozbaľovaciu ponuku zobrazenú na obrázku nižšie:
  2. Ďalej kliknite na NOVÝ PROJEKT:
  3. Zadajte názov projektu a potom kliknite na VYTVORIŤ tlačidlo:
  4. Po vybratom projekte kliknite na hamburgerové menu. Vyberte API a služby, potom poverenia:
  5. Ďalej kliknite na možnosť, ktorá hovorí KONFIGURÁCIA OBRAZOVKY SÚHLASU a vyberte Vonkajšie:
  6. Na ďalšej stránke zadajte názov svojej aplikácie a v prípade potreby uveďte e-mail. Môžete tiež preskúmať konfigurácie pre určité prispôsobenie. Po dokončení kliknite na ULOŽIŤ A POKRAČOVAŤ.
  7. V ponuke vľavo vyberte poverenia. Potom kliknite na VYTVORIŤ POVEDANIA a vyberte ID klienta OAuth.
  8. Ďalej vyberte Typ aplikácie a zadajte názov toho istého. Pre tento tutoriál, Typ aplikácie bude Webová aplikácia.
  9. Ďalej pridajte URI pre Autorizovaný pôvod JavaScriptu a Identifikátory URI autorizovaného presmerovania. Hostiteľom vášho webu by mal byť zdroj JavaScript a systém po overení presmeruje používateľov na URI presmerovania. Identifikátor URI presmerovania by mal zvyčajne obsahovať your-host-name/accounts/google/login/callback/. Pre vývojový režim to bude: http://127.0.0.1:8000/accounts/google/login/callback/. Kliknite na VYTVORIŤ keď raz hotovo.
  10. Po vytvorení poverení môžete skopírovať svoje ID klienta alebo Tajomstvo klienta na bezpečné miesto alebo si ich stiahnite ako súbory JSON.

Krok 3: Pridajte svoje ID klienta a tajný kľúč do aplikácie Django

Po vytvorení potrebných poverení prejdite na http://127.0.0.1:8000/admin, vyberte Sociálne aplikáciea vytvorte novú sociálnu aplikáciu. Ak chcete vytvoriť novú sociálnu aplikáciu, postupujte takto:

  1. Pridajte poskytovateľa. Poskytovateľ odkazuje na aplikáciu, pomocou ktorej overujete používateľa. V tomto prípade je to Google, v inom prípade to môže byť Snapchat.
  2. Zadajte názov svojej novej sociálnej aplikácie. Uistite sa, že ide o rozumné meno
  3. Vložiť do ID klienta ste skopírovali z Google.
  4. Pre Tajný kľúč, vložte do Tajomstvo klienta ste skopírovali z Google.
  5. The kľúč pole sa nevzťahuje na overenie pomocou Google, preto ho ignorujte.
  6. Nakoniec vyberte stránku, ku ktorej chcete priradiť sociálnu aplikáciu.

Krok 4: Otestujte svoje overenie Google

Odhláste sa z panela správcu a prejdite na http://127.0.0.1:8000/accounts/login/. Uvidíte možnosť prihlásiť sa cez Google.

Kliknutím naň presmerujete na obrazovku súhlasu. Ďalej vyberte účet, pomocou ktorého sa chcete prihlásiť.

Po výbere účtu budete presmerovaní na http://127.0.0.1:8000/accounts/profile/. To znamená, že vaša aplikácia funguje perfektne. Môžete vytvoriť vlastné šablóny, ktoré nahradia predvolené.

Zlepšenie registrácie používateľov pomocou sociálnej autentizácie v Django

Povolenie sociálnej autentifikácie je skvelý spôsob, ako pomôcť vašim používateľom získať skvelý zážitok z registrácie vašej aplikácie. Existujú aj iné spôsoby, ako povoliť autentifikáciu v Django, a mali by ste ich preskúmať, aby ste sa rozhodli, čo je pre váš prípad použitia najlepšie.