Μάθετε πώς να δημιουργείτε ένα ασφαλές σύστημα σύνδεσης με λογαριασμούς μέσων κοινωνικής δικτύωσης στο Django χρησιμοποιώντας το OAuth.
Ο έλεγχος ταυτότητας μέσω κοινωνικής δικτύωσης είναι ένας τρόπος επιβεβαίωσης της ταυτότητας ενός ατόμου μέσω ενός λογαριασμού κοινωνικής δικτύωσης αντί της χρήσης κωδικών πρόσβασης. Στην ανάπτυξη ιστού, είναι πάντα χρήσιμο να γίνεται έλεγχος ταυτότητας χρηστών χωρίς κωδικούς πρόσβασης. Με αυτόν τον τρόπο, μπορούν να συνδεθούν μέσω κοινωνικών εφαρμογών όπως το Google, το Twitter ή το GitHub.
Η ενεργοποίηση του ελέγχου ταυτότητας μέσω κοινωνικής δικτύωσης είναι ένας πολύ καλός τρόπος για να βελτιώσετε την ασφάλεια της εφαρμογής σας μειώνοντας τον κίνδυνο κοινών τρωτών σημείων που σχετίζονται με τον κωδικό πρόσβασης. Θα βελτιώσει επίσης την εμπειρία χρήστη της εφαρμογής σας, επειδή οι χρήστες δεν θα χρειαστεί να θυμούνται πολλούς κωδικούς πρόσβασης.
Έλεγχος ταυτότητας χρήστη στο Django
Το Django παρέχει ένα προεπιλεγμένο σύστημα ελέγχου ταυτότητας με το οποίο μπορούν να συνεργαστούν οι προγραμματιστές. Ωστόσο, αυτό το σύστημα ελέγχου ταυτότητας χρησιμοποιεί τον παραδοσιακό έλεγχο ταυτότητας, ο οποίος περιλαμβάνει τη μη αυτόματη συλλογή δεδομένων όπως το όνομα χρήστη, το email, τον κωδικό πρόσβασης, το όνομα και το επώνυμο του χρήστη.
Από σχεδίαση, το σύστημα ελέγχου ταυτότητας του Django είναι πολύ γενικό και δεν παρέχει πολλές δυνατότητες που χρησιμοποιούνται στα περισσότερα συστήματα ελέγχου ταυτότητας ιστού σήμερα. Για να συμπληρώσετε αυτό, θα θέλετε να χρησιμοποιήσετε πακέτα τρίτων όπως το τζάνγκο-αλλάουθ πακέτο.
Πώς να ενεργοποιήσετε το OAuth στο Django
Για να ελέγξετε την ταυτότητα των χρηστών σας χρησιμοποιώντας το OAuth σε μια εφαρμογή Django, μπορείτε να χρησιμοποιήσετε ένα πακέτο Django που ονομάζεται τζάνγκο-αλλάουθ.
Το Django Allauth είναι ένα πακέτο που χειρίζεται τον έλεγχο ταυτότητας, την εγγραφή, τη διαχείριση λογαριασμού και τον έλεγχο ταυτότητας λογαριασμών τρίτων (κοινωνικών) για το έργο σας στο Django. Τα παρακάτω βήματα θα σας καθοδηγήσουν προς τη ρύθμιση του Django Allauth για το έργο Django.
Βήμα 1: Εγκαταστήστε και ρυθμίστε το Django-Allauth
Εάν δεν το κάνετε ακόμη, δημιουργήστε ένα εικονικό περιβάλλον και εγκαταστήστε τζάνγκο-αλλάουθ μέσω pip:
pip install django-allauth
Σημειώστε ότι πρέπει να χρησιμοποιείτε Python 3.5 ή νεότερη έκδοση και Django 2.0 ή νεότερη έκδοση για να λειτουργήσει.
Βήμα 2: Προσθήκη Απαιτούμενων Εφαρμογών στο Django για το Django-Allauth
Μετά την εγκατάσταση τζάνγκο-αλλάουθ, άνοιξε το δικό σου settings.py αρχείο και προσθέστε τις παρακάτω εφαρμογές στο δικό σας INSTALLED_APPS λίστα:
INSTALLED_APPS = [
Add your other apps here
# Djang Allauth configuration apps
'django.contrib.sites',
'allauth',
'allauth.account',
'allauth.socialaccount',
]
Ακολουθούν ορισμένα σημεία που πρέπει να σημειώσετε σχετικά με ορισμένες από τις παραπάνω εφαρμογές:
- ο allauth.socialaccount Η εφαρμογή θα επιτρέπει στους χρήστες να συνδέονται μέσω κοινωνικών εφαρμογών όπως το X (πρώην Twitter), το Instagram, το GitHub και άλλες.
- ο django.contrib.sites Η εφαρμογή είναι ένα ενσωματωμένο πλαίσιο Django που απαιτείται για τζάνγκο-αλλάουθ για να δουλέψω. Η εφαρμογή παρέχει τη δυνατότητα διαχείρισης και διαφοροποίησης πολλών τοποθεσιών σε ένα μόνο έργο Django. Μπορείτε να καταλάβετε πώς λειτουργεί ανατρέχοντας στο Τεκμηρίωση Django.
Βήμα 3: Καθορίστε τα Backend ελέγχου ταυτότητας για το έργο σας
Το επόμενο βήμα είναι να ορίσετε πώς θέλετε να επαληθεύσετε την ταυτότητα των χρηστών σας. Μπορείτε να το κάνετε αυτό διαμορφώνοντας το AUTHENTICATION_BACKENDS στο δικό σου settings.py αρχείο. Για τζάνγκο-αλλάουθ, θα πρέπει να προσθέσετε αυτά:
AUTHENTICATION_BACKENDS = [
'django.contrib.auth.backends.ModelBackend',
'allauth.account.auth_backends.AuthenticationBackend',
]
Το παραπάνω απόσπασμα κώδικα ορίζει δύο backend ελέγχου ταυτότητας:
- Το πρώτο είναι το προεπιλεγμένο που χρησιμοποιεί ο Django. Αυτό θα επιτρέψει στον χρήστη διαχειριστή να συνδεθεί στον πίνακα διαχείρισης ανεξάρτητα από τη διαμόρφωση του django-allauth.
- Το δεύτερο ορίζει το backend ελέγχου ταυτότητας για τζάνγκο-αλλάουθ.
Βήμα 4: Προσθέστε το αναγνωριστικό του ιστότοπού σας
Στο αρχείο ρυθμίσεων, θα πρέπει να προσθέσετε το αναγνωριστικό για τον ιστότοπό σας. Εδώ είναι ένα παράδειγμα:
SITE_ID = 1
Από προεπιλογή, υπάρχει ένας ιστότοπος που ονομάζεται example.com στον πίνακα διαχείρισης. Μπορείτε να αποφασίσετε να τροποποιήσετε αυτόν τον ιστότοπο ή να προσθέσετε έναν για τον εαυτό σας. Σε κάθε περίπτωση, θα πρέπει να συνδεθείτε στον πίνακα διαχείρισης και να μεταβείτε στο Τοποθεσίες εφαρμογή.
Για να λάβετε το αναγνωριστικό ιστότοπου για έναν ιστότοπο Django, ανοίξτε το δικό σας Διεπαφή γραμμής εντολών (CLI) και εκτελέστε αυτήν την εντολή:
python manage.py 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)
Ο παραπάνω κωδικός θα εκτυπώσει το όνομα του ιστότοπου καθώς και το αναγνωριστικό του.
Βήμα 5: Διαμορφώστε τις διευθύνσεις URL σας
Στο έργο σας urls.py αρχείο, διαμορφώστε το μοτίβο διεύθυνσης URL για τζάνγκο-αλλάουθ. Έτσι πρέπει να μοιάζει:
from django.urls import path, include
urlpatterns = [
# Djang-allauth url pattern
path('accounts/', include('allauth.urls')),
]
Με αυτήν τη ρύθμιση, μπορείτε να ξεκινήσετε τον διακομιστή ανάπτυξης και να πλοηγηθείτε σε αυτόν http://127.0.0.1:8000/accounts/. Εάν έχετε ΕΝΤΟΠΙΣΜΟΣ ΣΦΑΛΜΑΤΩΝ οριστεί σε Αληθής, θα πρέπει να δείτε μια λίστα με τα διαθέσιμα μοτίβα διευθύνσεων URL για τζάνγκο-αλλάουθ.
Εάν έχετε κάνει τα παραπάνω, το έργο σας θα πρέπει να είναι έτοιμο για έλεγχο ταυτότητας μέσω κοινωνικής δικτύωσης.
Πώς να εφαρμόσετε τη σύνδεση/εγγραφή Google στην εφαρμογή Django σας
Μετά τη ρύθμιση τζάνγκο-αλλάουθ, θα πρέπει να είστε έτοιμοι να αφήσετε τους χρήστες σας να ελέγχουν την ταυτότητα τους με τους λογαριασμούς κοινωνικής δικτύωσης τους, όπως το Google.
Βήμα 1: Καταχωρίστε τον πάροχο του λογαριασμού κοινωνικής δικτύωσης στις εγκατεστημένες εφαρμογές σας
Στο δικό σου settings.py αρχείο, θα πρέπει να προσθέσετε τον πάροχο λογαριασμού κοινωνικής δικτύωσης INSTALLED_APPS. Σε αυτή την περίπτωση, είναι η Google. Άλλες επιλογές είναι το Instagram, το X κ.λπ.
INSTALLED_APPS = [
Add your other apps here
# Social account provider (google)
'allauth.socialaccount.providers.google',
]
Βήμα 2: Δημιουργήστε το αναγνωριστικό πελάτη και το μυστικό κλειδί σας στο Google
Για να ολοκληρώσετε αυτό το βήμα, πρέπει να δημιουργήσετε έναν λογαριασμό Google. Εάν το έχετε κάνει, ακολουθήστε τα παρακάτω βήματα:
- Κατευθυνθείτε προς το Κονσόλα Google Cloud για τη δημιουργία ενός νέου έργου. Πρώτα, κάντε κλικ στο αναπτυσσόμενο μενού που φαίνεται στην παρακάτω εικόνα:
- Στη συνέχεια, κάντε κλικ στο ΝΕΟ ΕΡΓΟ:
- Εισαγάγετε ένα όνομα για το έργο σας και, στη συνέχεια, κάντε κλικ στο ΔΗΜΙΟΥΡΓΩ κουμπί:
- Με επιλεγμένο το έργο σας, κάντε κλικ στο το μενού του χάμπουργκερ. Επιλέγω API και υπηρεσίες, έπειτα Διαπιστευτήρια:
- Στη συνέχεια, κάντε κλικ στην επιλογή που λέει ΔΙΑΜΟΡΦΩΣΗ ΟΘΟΝΗΣ ΣΥΝΑΙΝΗΣΗΣ και επιλέξτε Εξωτερικός:
- Στην επόμενη σελίδα, εισαγάγετε ένα όνομα για την εφαρμογή σας και συμπεριλάβετε ένα email όπου χρειάζεται. Μπορείτε επίσης να εξερευνήσετε τις διαμορφώσεις για κάποια προσαρμογή. Μόλις τελειώσετε, κάντε κλικ στο ΑΠΟΘΗΚΕΥΣΗ ΚΑΙ ΣΥΝΕΧΕΙΑ.
- Στο αριστερό μενού, επιλέξτε Διαπιστευτήρια. Μετά από αυτό, κάντε κλικ στο ΔΗΜΙΟΥΡΓΗΣΤΕ ΔΙΑΠΙΣΤΕΥΤΙΚΑ και επιλέξτε Αναγνωριστικό πελάτη OAuth.
- Στη συνέχεια, επιλέξτε το Τύπος αίτησης και εισάγετε ένα όνομα για το ίδιο. Για αυτό το σεμινάριο, το Τύπος αίτησης θα είναι εφαρμογή ιστού.
- Στη συνέχεια, προσθέστε URI για το Εξουσιοδοτημένες προελεύσεις JavaScript και Εξουσιοδοτημένα URI ανακατεύθυνσης. Ο κεντρικός υπολογιστής του ιστότοπού σας θα πρέπει να είναι η προέλευση JavaScript και το σύστημα θα ανακατευθύνει τους χρήστες στο URI ανακατεύθυνσης μετά τον έλεγχο ταυτότητας. Το URI ανακατεύθυνσης πρέπει συνήθως να περιέχει your-host-name/accounts/google/login/callback/. Για τη λειτουργία ανάπτυξης, θα είναι: http://127.0.0.1:8000/accounts/google/login/callback/. Κάντε κλικ στο ΔΗΜΙΟΥΡΓΩ όταν γίνει μια φορά.
- Αφού δημιουργήσετε τα διαπιστευτήρια, μπορείτε να αντιγράψετε το δικό σας ταυτότητα πελάτη ή Μυστικό πελάτη σε ασφαλές μέρος ή κατεβάστε τα ως αρχεία JSON.
Βήμα 3: Προσθέστε το αναγνωριστικό πελάτη και το μυστικό κλειδί στην εφαρμογή Django σας
Αφού δημιουργήσετε τα απαραίτητα διαπιστευτήρια, μεταβείτε στο http://127.0.0.1:8000/admin, επιλέξτε Κοινωνικές εφαρμογέςκαι δημιουργήστε μια νέα κοινωνική εφαρμογή. Ακολουθήστε αυτά τα βήματα για να δημιουργήσετε μια νέα εφαρμογή κοινωνικής δικτύωσης:
- Προσθέστε έναν πάροχο. Ο πάροχος αναφέρεται στην εφαρμογή με την οποία ελέγχετε την ταυτότητα του χρήστη σας. Σε αυτήν την περίπτωση, είναι η Google, σε άλλη περίπτωση, μπορεί να είναι το Snapchat.
- Εισαγάγετε ένα όνομα για τη νέα σας εφαρμογή κοινωνικής δικτύωσης. Βεβαιωθείτε ότι είναι ένα λογικό όνομα
- Επικόλληση στο ταυτότητα πελάτη αντιγράψατε από την Google.
- Για το Μυστικό κλειδί, πάστα στο Μυστικό πελάτη αντιγράψατε από την Google.
- ο Κλειδί Το πεδίο δεν ισχύει για τον έλεγχο ταυτότητας με την Google, επομένως αγνοήστε το.
- Τέλος, επιλέξτε έναν ιστότοπο με τον οποίο θα συσχετίσετε την εφαρμογή κοινωνικής δικτύωσης.
Βήμα 4: Δοκιμάστε τον έλεγχο ταυτότητας Google
Αποσυνδεθείτε από τον πίνακα διαχειριστή και μεταβείτε στο http://127.0.0.1:8000/accounts/login/. Θα δείτε μια επιλογή για να συνδεθείτε μέσω Google.
Κάντε κλικ σε αυτό για να ανακατευθυνθείτε στην οθόνη συναίνεσης. Στη συνέχεια, επιλέξτε έναν λογαριασμό για να συνδεθείτε.
Αφού επιλέξετε έναν λογαριασμό, θα μεταφερθείτε σε http://127.0.0.1:8000/accounts/profile/. Αυτό σημαίνει ότι η εφαρμογή σας λειτουργεί άψογα. Μπορείτε να δημιουργήσετε προσαρμοσμένα πρότυπα για να αντικαταστήσετε τα προεπιλεγμένα.
Βελτίωση της εγγραφής χρήστη με τον έλεγχο ταυτότητας κοινωνικού δικτύου στο Django
Η ενεργοποίηση του κοινωνικού ελέγχου ταυτότητας είναι ένας πολύ καλός τρόπος για να βοηθήσετε τους χρήστες σας να έχουν μια εξαιρετική εμπειρία εγγραφής στην εφαρμογή σας. Υπάρχουν άλλοι τρόποι για να ενεργοποιήσετε τον έλεγχο ταυτότητας στο Django και θα πρέπει να τους εξερευνήσετε για να αποφασίσετε τι είναι καλύτερο για την περίπτωση χρήσης σας.