Scopri come creare un sistema di accesso sicuro con account di social media in Django utilizzando OAuth.
L'autenticazione social è un modo per confermare l'identità di una persona tramite un account social invece di utilizzare le password. Nello sviluppo web è sempre utile autenticare gli utenti senza password. In questo modo, possono accedere tramite app social come Google, Twitter o GitHub.
Abilitare l'autenticazione social è un ottimo modo per migliorare la sicurezza della tua applicazione riducendo il rischio di vulnerabilità comuni legate alle password. Migliorerà anche l'esperienza utente della tua app perché gli utenti non dovranno ricordare molte password.
Autenticazione utente in Django
Django fornisce un sistema di autenticazione predefinito con cui gli sviluppatori possono lavorare. Tuttavia, questo sistema di autenticazione utilizza l'autenticazione tradizionale, che prevede la raccolta manuale di dati come nome utente, e-mail, password, nome e cognome dell'utente.
In base alla progettazione, il sistema di autenticazione di Django è molto generico e non fornisce molte funzionalità utilizzate oggi nella maggior parte dei sistemi di autenticazione web. Per completare questo, ti consigliamo di utilizzare pacchetti di terze parti come
django-allauth pacchetto.Come abilitare OAuth in Django
Per autenticare i tuoi utenti utilizzando OAuth in un'applicazione Django, puoi utilizzare un pacchetto Django chiamato django-allauth.
Django Allauth è un pacchetto che gestisce l'autenticazione, la registrazione, la gestione degli account e l'autenticazione degli account (social) di terze parti per il tuo progetto Django. I seguenti passaggi ti guideranno verso la configurazione di Django Allauth per il tuo progetto Django.
Passaggio 1: installa e configura Django-Allauth
Se devi ancora farlo, creare un ambiente virtuale e installare django-allauth tramite pip:
pip install django-allauth
Tieni presente che affinché funzioni è necessario utilizzare Python 3.5 o versione successiva e Django 2.0 o versione successiva.
Passaggio 2: aggiungi le app richieste a Django per Django-Allauth
Dopo l'installazione django-allauth, apri i tuoi impostazioni.py file e aggiungi le seguenti app al tuo APP_INSTALLATE elenco:
INSTALLED_APPS = [
Add your other apps here
# Djang Allauth configuration apps
'django.contrib.sites',
'allauth',
'allauth.account',
'allauth.socialaccount',
]
Ecco alcuni punti da notare su alcune delle app di cui sopra:
- IL allauth.socialaccount l'app consentirà agli utenti di accedere tramite app social come X (in precedenza Twitter), Instagram, GitHub e altre.
- IL django.contrib.sites app è un framework Django integrato necessario per django-allauth lavorare. L'app offre la possibilità di gestire e differenziare più siti all'interno di un singolo progetto Django. Puoi capire come funziona facendo riferimento al Documentazione Django.
Passaggio 3: Definisci i backend di autenticazione per il tuo progetto
Il passaggio successivo è definire come desideri autenticare i tuoi utenti. Puoi farlo configurando il file AUTHENTICATION_BACKENDS nel tuo impostazioni.py file. Per django-allauth, dovresti aggiungere questi:
AUTHENTICATION_BACKENDS = [
'django.contrib.auth.backends.ModelBackend',
'allauth.account.auth_backends.AuthenticationBackend',
]
Lo snippet di codice sopra definisce due backend di autenticazione:
- Il primo è quello predefinito utilizzato da Django. Ciò consentirà all'utente amministratore di accedere al pannello di amministrazione indipendentemente dalla configurazione di django-allauth.
- Il secondo definisce il backend di autenticazione per django-allauth.
Passaggio 4: aggiungi l'ID del tuo sito
Nel file delle impostazioni, dovresti aggiungere l'ID del tuo sito. Ecco un esempio:
SITE_ID = 1
Per impostazione predefinita, esiste un sito chiamato esempio.com nel pannello di amministrazione. Puoi decidere di modificare questo sito o aggiungerne uno tu stesso. In entrambi i casi, dovresti accedere al pannello di amministrazione e accedere al file Siti app.
Per ottenere l'ID del sito per un sito Django, apri il tuo Interfaccia della riga di comando (CLI) ed esegui questo comando:
python manage.py shell
Successivamente, scrivi questo script nella shell Python:
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)
Il codice sopra stamperà il nome del sito e il suo ID.
Passaggio 5: configura i tuoi URL
Nel tuo progetto urls.py file, configura il pattern URL per django-allauth. Ecco come dovrebbe apparire:
from django.urls import path, include
urlpatterns = [
# Djang-allauth url pattern
path('accounts/', include('allauth.urls')),
]
Con questa configurazione, puoi avviare il server di sviluppo e accedere a http://127.0.0.1:8000/accounts/. Se hai DEBUG impostato VERO, dovresti visualizzare un elenco di pattern URL disponibili per django-allauth.
Se hai fatto quanto sopra, il tuo progetto dovrebbe essere pronto per l'autenticazione social.
Come implementare l'accesso/registrazione Google nella tua app Django
Dopo la configurazione django-allauth, dovresti essere pronto a consentire ai tuoi utenti di autenticarsi con i loro account social come Google.
Passaggio 1: registra il provider del tuo account social nelle app installate
Nel tuo impostazioni.py file, dovresti aggiungere il provider dell'account social APP_INSTALLATE. In questo caso è Google. Altre opzioni sono Instagram, X, ecc.
INSTALLED_APPS = [
Add your other apps here
# Social account provider (google)
'allauth.socialaccount.providers.google',
]
Passaggio 2: crea il tuo ID cliente e la chiave segreta su Google
Per completare questo passaggio, è necessario avere creato un account Google. Se lo hai fatto, segui questi passaggi successivi:
- Dirigiti al Console Google Cloud per creare un nuovo progetto. Innanzitutto, fai clic sul menu a discesa mostrato nell'immagine seguente:
- Successivamente, fare clic su NUOVO PROGETTO:
- Inserisci un nome per il tuo progetto, quindi fai clic su CREARE pulsante:
- Con il progetto selezionato, fai clic su il menù dell'hamburger. Selezionare API e servizi, Poi Credenziali:
- Successivamente, fai clic sull'opzione che dice CONFIGURA SCHERMATA CONSENSO e seleziona Esterno:
- Nella pagina successiva, inserisci un nome per la tua app e includi un'e-mail dove necessario. Puoi anche esplorare le configurazioni per alcune personalizzazioni. Una volta terminato, fare clic su SALVA E CONTINUA.
- Nel menu a sinistra, seleziona Credenziali. Successivamente, fai clic su CREA CREDENZIALI e seleziona ID client OAuth.
- Quindi, seleziona il Tipo di applicazione e inserisci un nome per lo stesso. Per questo tutorial, il Tipo di applicazione sarà applicazione web.
- Successivamente, aggiungi gli URI per il file Origini JavaScript autorizzate E URI di reindirizzamento autorizzati. L'host del tuo sito web dovrebbe essere l'origine JavaScript e il sistema reindirizzerà gli utenti all'URI di reindirizzamento dopo l'autenticazione. L'URI di reindirizzamento dovrebbe in genere contenere il tuo nome-host/accounts/google/login/callback/. Per la modalità di sviluppo, sarà: http://127.0.0.1:8000/accounts/google/login/callback/. Clicca su CREARE una volta fatto.
- Dopo aver creato le credenziali, puoi copiare il tuo Identificativo cliente O Segreto del cliente in un luogo sicuro o scaricarli come file JSON.
Passaggio 3: aggiungi l'ID cliente e la chiave segreta alla tua app Django
Dopo aver creato le credenziali necessarie, accedere a http://127.0.0.1:8000/admin, Selezionare Applicazioni socialie creare una nuova applicazione social. Segui questi passaggi per creare una nuova app social:
- Aggiungi un fornitore. Il provider si riferisce all'app con cui stai autenticando il tuo utente. In questo caso si tratta di Google, in un altro caso potrebbe essere Snapchat.
- Inserisci un nome per la tua nuova app social. Assicurati che sia un nome ragionevole
- Incolla nel Identificativo cliente hai copiato da Google.
- Per il Chiave segreta, incolla il file Segreto del cliente hai copiato da Google.
- IL Chiave il campo non si applica all'autenticazione con Google, quindi ignoralo.
- Infine, seleziona un sito a cui associare l'applicazione social.
Passaggio 4: verifica la tua autenticazione Google
Esci dal tuo pannello di amministrazione e vai a http://127.0.0.1:8000/accounts/login/. Vedrai un'opzione per accedere tramite Google.
Fare clic su di esso per reindirizzare alla schermata di consenso. Successivamente, seleziona un account con cui accedere.
Dopo aver selezionato un account, verrai reindirizzato a http://127.0.0.1:8000/accounts/profile/. Ciò significa che la tua app funziona perfettamente. Puoi creare modelli personalizzati per sostituire quelli predefiniti.
Miglioramento della registrazione degli utenti con l'autenticazione social in Django
Abilitare l'autenticazione social è un ottimo modo per aiutare i tuoi utenti a vivere un'ottima esperienza registrandosi alla tua applicazione. Esistono altri modi per abilitare l'autenticazione in Django e dovresti esplorarli per decidere cosa è meglio per il tuo caso d'uso.