Hur man bygger ett socialt autentiseringssystem i Django med OAuth

Hur man bygger ett socialt autentiseringssystem i Django med OAuth

Social autentisering är ett sätt att bekräfta en persons identitet genom ett socialt konto istället för att använda lösenord. Vid webbutveckling är det alltid bra att autentisera användare utan lösenord. På så sätt kan de logga in via sociala appar som Google, Twitter eller GitHub.





Att aktivera social autentisering är ett utmärkt sätt att förbättra din applikations säkerhet genom att minska risken för vanliga lösenordsrelaterade sårbarheter. Det kommer också att förbättra användarupplevelsen av din app eftersom användarna inte behöver komma ihåg många lösenord.





Användarautentisering i Django

Django tillhandahåller ett standardautentiseringssystem för utvecklare att arbeta med. Detta autentiseringssystem använder dock traditionell autentisering, vilket innebär att man manuellt samlar in data som användarnamn, e-post, lösenord, förnamn och efternamn på användaren.





Till sin design är Djangos autentiseringssystem väldigt generiskt och ger inte många funktioner som används i de flesta webbautentiseringssystem idag. För att komplettera detta vill du använda tredjepartspaket som t.ex django-allauth paket.

Hur man aktiverar OAuth i Django

För att autentisera dina användare med OAuth i en Django-applikation kan du använda ett Django-paket som heter django-allauth .



Django Allauth är ett paket som hanterar autentisering, registrering, kontohantering och tredjeparts (social) kontoautentisering för ditt Django-projekt. Följande steg kommer att guida dig mot att ställa in Django Allauth för ditt Django-projekt.

Steg 1: Installera och konfigurera Django-Allauth

Om du ännu inte gör det, skapa en virtuell miljö och installera django-allauth via pip:





pip install django-allauth 

Observera att du måste använda Python 3.5 eller högre och Django 2.0 eller högre för att det ska fungera.

Steg 2: Lägg till nödvändiga appar till Django för Django-Allauth

Efter installation django-allauth , öppna din settings.py fil och lägg till följande appar till din INSTALLERADE_APPAR lista:





hur man laddar ner video från en webbplats
INSTALLED_APPS = [ 

    """
    Add your other apps here
    """

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

Här är några punkter att notera om några av ovanstående appar:

  • De allauth.socialaccount appen låter användare logga in via sociala appar som X (tidigare Twitter), Instagram, GitHub och andra.
  • De django.contrib.sites app är ett inbyggt Django-ramverk som krävs för django-allauth att jobba. Appen ger möjlighet att hantera och differentiera flera webbplatser inom ett enda Django-projekt. Du kan förstå hur det fungerar genom att hänvisa till Django dokumentation .

Steg 3: Definiera autentiseringsbackends för ditt projekt

Nästa steg är att definiera hur du vill autentisera dina användare. Du kan göra detta genom att konfigurera AUTHENTICATION_BACKENDS i din settings.py fil. För django-allauth , bör du lägga till dessa:

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

Kodavsnittet ovan definierar två autentiseringsbackends:

  1. Den första är standard som används av Django. Detta kommer att tillåta adminanvändaren att logga in på adminpanelen oavsett django-allauths konfiguration.
  2. Den andra definierar autentiseringsbackend för django-allauth .

Steg 4: Lägg till ditt webbplats-ID

I din inställningsfil bör du lägga till ID:t för din webbplats. Här är ett exempel:

SITE_ID = 1 

Som standard finns det en webbplats som heter exempel.com i adminpanelen. Du kan välja att ändra denna sida eller lägga till en själv. I båda fallen bör du logga in på adminpanelen och navigera till Webbplatser app.

  django admin panel för att lägga till en ny webbplats

För att få plats-ID för en Django-webbplats, öppna din Kommandoradsgränssnitt (CLI) och kör detta kommando:

python manage.py shell 

Skriv sedan det här skriptet i Python-skalet:

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)

Ovanstående kod kommer att skriva ut namnet på webbplatsen samt dess ID.

icloud loggar inte in på mac

Steg 5: Konfigurera dina webbadresser

I ditt projekt urls.py fil, konfigurera URL-mönstret för django-allauth . Så här ska det se ut:

from django.urls import path, include 

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

Med den här inställningen kan du starta din utvecklingsserver och navigera till http://127.0.0.1:8000/accounts/ . Om du har DEBUGA satt till Sann , bör du se en lista över tillgängliga webbadressmönster för django-allauth .

  En 404-sida i Django DEBUG-läge, som visar en lista över webbadressmönster som är tillgängliga i django-allauth

Om du har gjort ovanstående bör ditt projekt vara redo för social autentisering.

Så här implementerar du Google Login/Signup i din Django-app

Efter installation django-allauth , bör du vara redo att låta dina användare autentisera sig med sina sociala konton som Google.

Steg 1: Registrera din sociala kontoleverantör i dina installerade appar

I din settings.py fil bör du lägga till leverantören av sociala konton i INSTALLERADE_APPAR . I det här fallet är det Google. Andra alternativ är Instagram, X, etc.

INSTALLED_APPS = [ 

    """
    Add your other apps here
    """

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

Steg 2: Skapa ditt klient-ID och hemliga nyckel på Google

För att slutföra det här steget måste du ha ett Google-konto skapat. Om du har gjort det, följ följande steg:

  1. Gå över till Google Cloud-konsol för att skapa ett nytt projekt. Klicka först på rullgardinsmenyn som visas i bilden nedan:   Lägg till dina nya OAuth-uppgifter på din adminpanel
  2. Klicka sedan på NYTT PROJEKT :   Django-Allauth
  3. Ange ett namn för ditt projekt och klicka sedan på SKAPA knapp:   Googles samtyckesskärm
  4. Med ditt projekt valt, klicka på hamburgermenyn . Välj API:er och tjänster , då Referenser :
  5. Klicka sedan på alternativet som säger KONFIGURERA SAMTYCKESKÄRMEN och välj Extern :
  1. På nästa sida anger du ett namn för din app och inkluderar ett e-postmeddelande vid behov. Du kan också utforska konfigurationerna för viss anpassning. När du är klar klickar du på SPARA OCH FORTSÄTT .
  2. Välj i menyn till vänster Referenser . Efter det, klicka på SKAPA Autentiseringsuppgifter och välj OAuth-klient-ID .
  3. Välj sedan Ansökningstyp och ange ett namn för densamma. För denna handledning, Ansökningstyp kommer vara webbapplikation .
  4. Lägg sedan till URI:er för Auktoriserat JavaScript-ursprung och Auktoriserade omdirigerings-URI:er . Webbplatsens värd bör vara JavaScript-ursprunget, och systemet kommer att omdirigera användare till omdirigerings-URI efter autentisering. Omdirigerings-URI bör vanligtvis innehålla ditt-värdnamn/accounts/google/login/återuppringning /. För utvecklingsläge blir det: http://127.0.0.1:8000/accounts/google/login/callback/ . Klicka på SKAPA när en gång gjort.
  5. När du har skapat autentiseringsuppgifterna kan du kopiera din Klient ID eller Klienthemlighet till en säker plats eller ladda ner dem som JSON-filer.

Steg 3: Lägg till ditt klient-ID och hemliga nyckel till din Django-app

När du har skapat de nödvändiga användaruppgifterna, navigera till http://127.0.0.1:8000/admin , Välj Sociala applikationer , och skapa en ny social applikation. Följ dessa steg för att skapa en ny social app:

  1. Lägg till en leverantör. Leverantören hänvisar till appen du autentiserar din användare med. I det här fallet är det Google, i ett annat fall kan det vara Snapchat.
  2. Ange ett namn för din nya sociala app. Se till att det är ett rimligt namn
  3. Klistra in Klient ID du kopierade från Google.
  4. För Hemlig nyckel , klistra in Klienthemlighet du kopierade från Google.
  5. De Nyckel fältet gäller inte för autentisering med Google, så ignorera det.
  6. Slutligen, välj en webbplats att associera den sociala applikationen med.

Steg 4: Testa din Google-autentisering

Logga ut från din adminpanel och navigera till http://127.0.0.1:8000/accounts/login/ . Du kommer att se ett alternativ för att logga in via Google.

 's default sign in page

Klicka på den för att omdirigera till samtyckesskärmen. Välj sedan ett konto att logga in med.

När du har valt ett konto kommer du att omdirigeras till http://127.0.0.1:8000/accounts/profile/ . Det betyder att din app fungerar perfekt. Du kan skapa anpassade mallar för att ersätta standardmallarna.

Förbättra användarregistrering med social autentisering i Django

Att aktivera social autentisering är ett bra sätt att hjälpa dina användare att få en fantastisk upplevelse när de registrerar sig för din applikation. Det finns andra sätt att aktivera autentisering i Django, och du bör utforska dem för att avgöra vad som är bäst för ditt användningsfall.