Hur man bygger ett socialt autentiseringssystem i Django med hjälp av OAuth
Social autentisering är ett sätt att bekräfta en persons identitet via ett socialt konto istället för att använda lösenord. Vid webbutveckling är det alltid bra att kunna autentisera användare utan lösenord. På så sätt kan de logga in via sociala appar som Google, Twitter eller GitHub.
Social autentisering kan avsevärt stärka säkerheten och integriteten i en applikation, minimera känsligheten för utbredda lösenordscentrerade svagheter och samtidigt förbättra slutanvändarens upplevelse genom att eliminera bördan av att behöva komma ihåg flera inloggningsuppgifter.
Användarautentisering i Django
Django erbjuder en inbyggd autentiseringsmekanism som underlättar sömlöst samarbete mellan utvecklare. Trots detta använder den konventionell autentisering, vilket kräver manuell inmatning av information inklusive användarnamn, e-post, lösenord, förnamn och efternamn från användare.
Djangos standardautentiseringssystem har en grundläggande struktur som saknar flera avancerade funktioner som vanligtvis finns i moderna ramverk för webbautentisering. Därför är det starkt rekommenderat att införliva ytterligare komponenter, som django-allauth-biblioteket, som kan komplettera och förbättra dess funktionalitet.
Hur man aktiverar OAuth i Django
För att validera användarautentisering inom ett Django-projekt som använder OAuth-protokollet kan man använda Django-biblioteket som kallas “django-allauth.
Django Allauth är ett applikationsprogrammeringsgränssnitt som är utformat för att effektivisera användarautentisering, registrering och kontohanteringsprocesser inom ett Django webbutvecklingsramverk. För att etablera denna funktionalitet i ditt Django-projekt, följ den omfattande uppsättningen instruktioner som ges nedan.
Steg 1: Installera och konfigurera Django-Allauth
Om du inte redan har gjort det rekommenderas att du skapar en virtuell miljö och installerar Django-allauth med hjälp av pip. Detta gör det möjligt att integrera allauth i ditt Django-projekt.
pip install django-allauth
Observera att den här funktionen endast är kompatibel med Python version 3.5 eller senare, samt Django ramverk version 2.0 eller senare.
Steg 2: Lägg till nödvändiga appar i Django för Django-Allauth
Efter installationen av biblioteket ‘django-allauth’ är det nödvändigt att ändra konfigurationsfilen i projektet genom att lägga till en lista över applikationer inom parametern “INSTALLED\_APPS” som finns i filen “settings.py”. Specifikt måste man inkludera namnet på applikationen samt eventuella ytterligare beroenden som kan krävas för att den ska fungera korrekt.
INSTALLED_APPS = [
"""
Add your other apps here
"""
# Djang Allauth configuration apps
'django.contrib.sites',
'allauth',
'allauth.account',
'allauth.socialaccount',
]
Flera viktiga faktorer bör beaktas när det gäller de ovannämnda applikationerna, inklusive deras funktioner och kapacitet.
Applikationen allauth.socialaccount underlättar användarautentisering via olika sociala plattformar inklusive, men inte begränsat till, X (tidigare känd som Twitter), Instagram och GitHub.
⭐ Appen django.contrib.sites är ett inbyggt Django-ramverk som krävs för att django-allauth ska fungera. Appen gör det möjligt att hantera och differentiera flera webbplatser inom ett enda Django-projekt. Du kan förstå hur det fungerar genom att läsa Django-dokumentationen .
Steg 3: Definiera autentiseringsbackends för ditt projekt
För att upprätta ett system för användarautentisering är det nödvändigt att ange önskad verifieringsmetod för användarna. Detta kan uppnås genom att justera konfigurationen av AUTHENTICATION\_BACKENDS i filen settings.py. För dem som använder django-allauth-biblioteket rekommenderas att de ovannämnda komponenterna införlivas.
AUTHENTICATION_BACKENDS = [
'django.contrib.auth.backends.ModelBackend',
'allauth.account.auth_backends.AuthenticationBackend',
]
Den medföljande koden skapar ett ramverk för implementering och användning av flera autentiseringsmekanismer i en applikation, genom att definiera och konfigurera två olika backend-komponenter, nämligen “LOCAL” och “REMOTE”, som fungerar som grunden för hantering av användarautentiseringsförfrågningar. Dessa backends är utformade för att enkelt kunna integreras med olika frontend-ramverk och tjänster, vilket gör det möjligt för utvecklare att sömlöst integrera flexibla och säkra autentiseringsalternativ i sina applikationer.
Den ursprungliga inställningen är det standardalternativ som används av Django, vilket ger den administrativa användaren åtkomst till adminpanelen oavsett vilka konfigurationer som gjorts via django-allauth.
Django-Allauth, ett Django-program som effektiviserar användarregistrering och inloggning på flera konton via tredjepartstjänster som e-post/OAuth2-leverantörer, kräver en autentiseringsbackend för att fungera effektivt.
Steg 4: Lägg till ditt webbplats-ID
För att kunna konfigurera din webbplats korrekt är det viktigt att inkludera en unik identifierare som kallas webbplats-ID i din inställningsfil. Som en illustration visar följande kodavsnitt hur detta kan uppnås:
SITE_ID = 1
Standardkonfigurationen för den administrativa instrumentpanelen innehåller en post för " http://example.com “. Användare har möjlighet att ändra denna inställning eller skapa en ny webbplats om så önskas. För att göra detta måste de logga in på sitt konto och komma åt applikationen “Webbplatser” i kontrollpanelen.
Gör så här för att hämta det webbplats-ID som är kopplat till en viss Django-webbplats med hjälp av kommandoradsgränssnittet:1. Starta kommandotolken eller terminalen på din dator.2Navigera till den katalog där du har installerat Django-ramverket.3. Kör följande kommando i CLI:csspython manage.py sites -output=fields site_id {your-site-name}Ersätt {your-site-name}
med namnet på den specifika Django-site för vilken du vill få fram dess ID. Hanteringskommandot sites
genererar en JSON-fil som innehåller information om alla webbplatser som konfigurerats inom ditt Django-projekt, inklusive deras motsvarande ID.
python manage.py shell
För att köra det ovan nämnda skriptet i Python-tolken måste man först öppna den och sedan mata in koden. Denna process kan åstadkommas genom att använda antingen en integrerad utvecklingsmiljö (IDE) eller ett kommandoradsgränssnitt (CLI).
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)
Den ovan nämnda koden kommer att visa både nomenklaturen och identifieraren som är associerade med webbplatsen i fråga.
Steg 5: Konfigurera dina webbadresser
För att integrera Django Allauth i ditt projekts webbadress-konfiguration måste du först se till att en ‘urls.py’-fil finns i din projektkatalog. Om inte, skapa en och lägg till det nödvändiga kodavsnittet som visas nedan:pythonfrom django.urls import pathfrom allauth.account.views import SignUpView, SignInViewapp_name = ‘myproject’ # ersätt med ditt projektnamnurlpatterns = [path(‘signup/’, SignUpView.as_view(), name=‘signup’),path(’login/’, SignInView.as_view(), name=‘login’)]Se till att ersätta 'myproject'
med det faktiska namnet på ditt projekt, och inkludera eventuella ytterligare nödvändiga URL-mönster om det behövs.
from django.urls import path, include
urlpatterns = [
# Djang-allauth url pattern
path('accounts/', include('allauth.urls')),
]
Med den här konfigurationen kan du starta din utvecklingsserver och komma åt http://127.0.0.1:8000/accounts/ i din webbläsare. När inställningen “DEBUG” är inställd på “True” visas Django Allauths tillgängliga URL-mönster.
När du har slutfört de steg som beskrivits tidigare är ditt projekt nu förberett för att genomgå social autentisering.
Hur man implementerar Google Login/Signup i din Django App
Efter installation och konfiguration av Django-Allauth kommer användarna att ha möjlighet att autentisera sig med sina sociala mediekonton, inklusive de som tillhandahålls av Google.
Steg 1: Registrera leverantören av ditt sociala konto i dina installerade appar
För att kunna integrera ett socialt mediekonto i inställningarna för din applikation är det nödvändigt att inkludera den specifika sociala medieplattformen som en installerad app i listan “INSTALLED\_APPS” i filen “settings.py” i ditt projekt. Om du t.ex. vill integrera Google lägger du helt enkelt till “Google” i listan över installerade appar. På samma sätt kan andra sociala plattformar som Instagram eller X också läggas till i denna lista genom att inkludera deras respektive namn.
INSTALLED_APPS = [
"""
Add your other apps here
"""
# Social account provider (google)
'allauth.socialaccount.providers.google',
]
Steg 2: Skapa ditt klient-ID och din hemliga nyckel på Google
För att lyckas med denna uppgift är det absolut nödvändigt att du har ett giltigt Google-konto. Om du redan har ett konto hänvisar vi till de efterföljande riktlinjerna:
⭐ Gå över till Google Cloud-konsolen för att skapa ett nytt projekt. Klicka först på rullgardinsmenyn som visas i bilden nedan:
⭐ Klicka sedan på NYTT PROJEKT :
⭐ Ange ett namn för ditt projekt och klicka sedan på knappen SKAPA:
⭐ När du har valt ditt projekt klickar du på hamburgermenyn . Välj API:er & Tjänster , sedan Referenser :
⭐ Klicka sedan på alternativet som säger CONFIGURE CONSENT SCREEN och välj Extern :
⭐ På nästa sida anger du ett namn för din app och inkluderar en e-postadress vid behov. Du kan också utforska konfigurationerna för viss anpassning. När du är klar klickar du på SPARA OCH FORTSÄTT .
⭐ I menyn till vänster väljer du Credentials . Klicka sedan på CREATE CREDENTIALS och välj OAuth klient-ID .
⭐ Välj sedan Applikationstyp och ange ett namn för densamma. I den här handledningen kommer applikationstypen att vara Webbapplikation.
⭐ Lägg sedan till URI:er för auktoriserade JavaScript-ursprung och auktoriserade omdirigerings-URI:er . Webbplatsens host ska vara JavaScript origins, och systemet kommer att omdirigera användare till redirect URI efter autentisering. Omdirigerings-URI:n bör vanligtvis innehålla ditt värdnamn/konton/google/login/callback /. För utvecklingsläget blir det: http://127.0.0.1:8000/accounts/google/login/callback/ . Klicka på CREATE när du är klar.
⭐ När du har skapat autentiseringsuppgifterna kan du kopiera ditt klient-ID eller din 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
Efter att ha fastställt de nödvändiga åtkomstuppgifterna, vänligen rikta din webbläsare till " http://127.0.0.1:8000/admin " och klicka sedan på “Sociala applikationer” från de tillgängliga menyalternativen. Fortsätt sedan med att initiera skapandet av en ny social applikation genom att följa de efterföljande instruktionerna som beskrivs nedan:
När man lägger till en ny autentiseringsleverantör i ett program är det nödvändigt att specificera den tjänst genom vilken användare kommer att få tillgång till sina konton. Denna enhet kallas vanligen för “provider” och kan variera beroende på vilken plattform som används. Om applikationen t.ex. stöder integration med Google-kontouppgifter, skulle den tillagda leverantören motsvara Google. På samma sätt, om applikationen möjliggör anslutning till Snapchat-inloggningsinformation, skulle den valda leverantören gälla Snapchat.
Självklart hjälper jag dig gärna att komma på ett lämpligt och raffinerat namn för din nya sociala applikation. Här är några förslag baserade på dina krav:1. SocialMingle - Det här namnet antyder att användare kan ansluta och mingla med andra via plattformen. Det är fyndigt och lätt att komma ihåg.2. ConnectionsHub - Det här namnet antyder att appen fungerar som ett centralt nav där människor kan skapa kontakter med varandra. Det låter professionellt och pålitligt.3. FriendFinderX - Det här namnet kan fungera bra om din app fokuserar på att hjälpa människor att hitta vänner eller potentiella romantiska partners. Var dock uppmärksam på dess konnotation, som kanske inte är lämplig för alla målgrupper.4. LinkUpNow - Detta namn betonar idén om
Vänligen ange en säker och konfidentiell klienthemlighet från Google, som kommer att användas som krypteringsnyckel för vårt utbyte av känslig information.
Autentiseringsprocessen med Google påverkas inte av det angivna nyckelfältet och bör ignoreras.
Välj slutligen en plattform för att integrera verktyget för sociala medier.
Steg 4: Testa din Google-autentisering
Logga ut från ditt administrativa gränssnitt och fortsätt sedan till http://127.0.0.1:8000/accounts/login/ . När du kommer till den här sidan kommer du att märka ett inloggningsalternativ tillgängligt via Google.
Vänligen klicka på det ovannämnda alternativet för att omdirigeras till samtyckesskärmen. Väl där, välj ett lämpligt konto för att fortsätta med inloggningen.
När man väljer ett visst konto kommer man att hänvisas till http://127.0.0.1:8000/accounts/profile/ (nedan kallad “destinationsadressen”), som fungerar som bevis på att applikationen fungerar. Dessutom är det möjligt för användare att utveckla personliga mallar som avviker från standarduppsättningen för att bättre passa deras preferenser och krav.
Förbättrad användarregistrering med social autentisering i Django
Social autentisering kan avsevärt förbättra användarregistreringsupplevelsen i din applikation. Det finns alternativa metoder för att aktivera autentisering i Django, men det vore klokt att överväga om de är lämpliga utifrån dina specifika krav.