Naučite kako stvoriti siguran sustav prijave s računima društvenih medija u Djangu koristeći OAuth.

Društvena autentifikacija je način da se potvrdi identitet osobe putem društvenog računa umjesto korištenja lozinki. U web razvoju uvijek je korisno autentificirati korisnike bez lozinki. Na taj način se mogu prijaviti putem društvenih aplikacija kao što su Google, Twitter ili GitHub.

Omogućavanje društvene provjere autentičnosti odličan je način za poboljšanje sigurnosti vaše aplikacije smanjenjem rizika od uobičajenih ranjivosti povezanih s lozinkama. Također će poboljšati korisničko iskustvo vaše aplikacije jer korisnici neće morati pamtiti mnogo zaporki.

Autentifikacija korisnika u Djangu

Django nudi zadani sustav provjere autentičnosti s kojim programeri mogu raditi. Međutim, ovaj sustav autentifikacije koristi tradicionalnu autentifikaciju, koja uključuje ručno prikupljanje podataka kao što su korisničko ime, e-pošta, lozinka, ime i prezime korisnika.

Po dizajnu, Djangov sustav provjere autentičnosti vrlo je generički i ne pruža mnogo značajki koje se danas koriste u većini sustava web provjere autentičnosti. Da biste to nadopunili, trebali biste koristiti pakete trećih strana kao što je

django-allauth paket.

Kako omogućiti OAuth u Djangu

Za autentifikaciju svojih korisnika pomoću OAutha u Django aplikaciji, možete koristiti Django paket pod nazivom django-allauth.

Django Allauth je paket koji upravlja autentifikacijom, registracijom, upravljanjem računom i autentifikacijom računa treće strane (društvene mreže) za vaš Django projekt. Sljedeći koraci vodit će vas prema postavljanju Django Allautha za vaš Django projekt.

Korak 1: Instalirajte i postavite Django-Allauth

Ako to tek trebaš učiniti, stvoriti virtualno okruženje i instalirati django-allauth putem pipa:

pip install django-allauth

Imajte na umu da morate koristiti Python 3.5 ili noviji i Django 2.0 ili noviji da bi radio.

Korak 2: Dodajte potrebne aplikacije u Django za Django-Allauth

Nakon instaliranja django-allauth, otvori svoj postavke.py datoteku i dodajte sljedeće aplikacije u svoju INSTALLED_APPS popis:

INSTALLED_APPS = [


Add your other apps here

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

Evo nekoliko točaka koje treba imati na umu o nekim od gore navedenih aplikacija:

  • The allauth.socialaccount aplikacija će korisnicima omogućiti prijavu putem društvenih aplikacija kao što su X (bivši Twitter), Instagram, GitHub i druge.
  • The django.contrib.sites aplikacija je ugrađeni Django okvir koji je potreban za django-allauth raditi. Aplikacija pruža mogućnost upravljanja i razlikovanja više stranica unutar jednog Django projekta. Možete razumjeti kako to funkcionira ako pogledate Django dokumentacija.

Korak 3: Definirajte pozadinu provjere autentičnosti za svoj projekt

Sljedeći korak je definiranje načina na koji želite autentificirati svoje korisnike. To možete učiniti tako da konfigurirate AUTHENTICATION_BACKENDS u vašem postavke.py datoteka. Za django-allauth, trebate dodati ovo:

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

Gornji isječak koda definira dvije pozadine provjere autentičnosti:

  1. Prvi je zadani koji koristi Django. Ovo će omogućiti administratorskom korisniku da se prijavi na administratorsku ploču bez obzira na konfiguraciju django-allauth-a.
  2. Drugi definira pozadinu provjere autentičnosti za django-allauth.

Korak 4: Dodajte ID svoje web-lokacije

U datoteci s postavkama trebali biste dodati ID svoje web-lokacije. Evo primjera:

SITE_ID = 1

Prema zadanim postavkama postoji stranica pod nazivom primjer.com u administratorskoj ploči. Možete odlučiti izmijeniti ovu stranicu ili dodati jednu za sebe. U svakom slučaju, trebali biste se prijaviti na administrativnu ploču i otići na Stranice aplikacija

Da biste dobili ID stranice za Django stranicu, otvorite svoju Sučelje naredbenog retka (CLI) i pokrenite ovu naredbu:

python manage.py shell

Zatim napišite ovu skriptu u Python ljusku:

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)

Gornji kod će ispisati naziv stranice kao i njen ID.

Korak 5: Konfigurirajte svoje URL-ove

U vašem projektu urls.py datoteku, konfigurirajte uzorak URL-a za django-allauth. Ovako bi to trebalo izgledati:

from django.urls import path, include

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

S ovom postavkom možete pokrenuti svoj razvojni poslužitelj i otići na http://127.0.0.1:8000/accounts/. Ako imate DEBUG postavljen Pravi, trebali biste vidjeti popis dostupnih URL uzoraka za django-allauth.

Ako ste učinili gore navedeno, vaš bi projekt trebao biti spreman za društvenu autentifikaciju.

Kako implementirati Google prijavu/prijavu u svoju Django aplikaciju

Nakon postavljanja django-allauth, trebali biste biti spremni dopustiti svojim korisnicima da se autentificiraju pomoću svojih društvenih računa kao što je Google.

Korak 1: Registrirajte svog pružatelja društvenih računa u svojim instaliranim aplikacijama

U vašem postavke.py datoteku, trebali biste dodati pružatelja društvenog računa INSTALLED_APPS. U ovom slučaju to je Google. Ostale opcije su Instagram, X itd.

INSTALLED_APPS = [


Add your other apps here

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

Korak 2: Izradite svoj ID klijenta i tajni ključ na Googleu

Da biste dovršili ovaj korak, morate imati kreiran Google račun. Ako ste to učinili, slijedite sljedeće korake:

  1. Idite do Google Cloud konzola za stvaranje novog projekta. Najprije kliknite na padajući izbornik prikazan na slici ispod:
  2. Zatim kliknite na NOVI PROJEKT:
  3. Unesite naziv za svoj projekt, a zatim kliknite STVORITI dugme:
  4. S odabranim projektom kliknite na jelovnik za hamburgere. Izaberi API-ji i usluge, onda vjerodajnice:
  5. Zatim kliknite na opciju koja kaže KONFIGURIRAJTE ZASLON PRISTANKA i odaberite Vanjski:
  6. Na sljedećoj stranici unesite naziv svoje aplikacije i uključite e-poštu gdje je potrebno. Također možete istražiti konfiguracije za neke prilagodbe. Kada završite, kliknite na SPREMI I NASTAVI.
  7. Na lijevom izborniku odaberite vjerodajnice. Nakon toga kliknite na STVARANJE VJERODAVNICA i odaberite OAuth ID klijenta.
  8. Zatim odaberite Vrsta aplikacije i unesite naziv za isti. Za ovaj vodič, Vrsta aplikacije bit će Web aplikacija.
  9. Zatim dodajte URI-je za Ovlašteno podrijetlo JavaScripta i Ovlašteni URI-ji za preusmjeravanje. Host vaše web stranice trebao bi biti izvor JavaScripta, a sustav će preusmjeriti korisnike na URI za preusmjeravanje nakon provjere autentičnosti. URI za preusmjeravanje obično treba sadržavati ime-domaćina/accounts/google/login/callback/. Za razvojni način to će biti: http://127.0.0.1:8000/accounts/google/login/callback/. Kliknite na STVORITI kad jednom bude gotovo.
  10. Nakon što izradite vjerodajnice, možete kopirati svoje ID klijenta ili Tajna klijenta na sigurno mjesto ili ih preuzmite kao JSON datoteke.

Korak 3: Dodajte svoj ID klijenta i tajni ključ svojoj aplikaciji Django

Nakon što stvorite potrebne vjerodajnice, idite na http://127.0.0.1:8000/admin, Izaberi Društvene aplikacijei izradite novu društvenu aplikaciju. Slijedite ove korake za izradu nove društvene aplikacije:

  1. Dodajte davatelja usluga. Davatelj se odnosi na aplikaciju pomoću koje autentificirate svog korisnika. U ovom slučaju to je Google, u drugom bi to mogao biti Snapchat.
  2. Unesite naziv za svoju novu društvenu aplikaciju. Provjerite je li to razumno ime
  3. Zalijepite u ID klijenta kopirali ste s Googlea.
  4. Za Tajni ključ, zalijepite u Tajna klijenta kopirali ste s Googlea.
  5. The Ključ polje se ne odnosi na provjeru autentičnosti s Googleom, stoga ga zanemarite.
  6. Na kraju odaberite mjesto s kojim ćete povezati društvenu aplikaciju.

Korak 4: Testirajte svoju Google autentifikaciju

Odjavite se sa svoje administratorske ploče i idite na http://127.0.0.1:8000/accounts/login/. Vidjet ćete opciju za prijavu putem Googlea.

Kliknite na njega za preusmjeravanje na zaslon pristanka. Zatim odaberite račun za prijavu.

Nakon što odaberete račun, bit ćete preusmjereni na http://127.0.0.1:8000/accounts/profile/. To znači da vaša aplikacija radi savršeno. Možete izraditi prilagođene predloške koji će zamijeniti zadane.

Poboljšanje registracije korisnika društvenom autentifikacijom u Djangu

Omogućavanje društvene autentifikacije izvrstan je način da svojim korisnicima pomognete da imaju sjajno iskustvo registracije za vašu aplikaciju. Postoje i drugi načini za omogućavanje provjere autentičnosti u Djangu i trebali biste ih istražiti kako biste odlučili što je najbolje za vaš slučaj upotrebe.