Erfahren Sie, wie Sie mithilfe von OAuth ein sicheres Anmeldesystem mit Social-Media-Konten in Django erstellen.

Bei der sozialen Authentifizierung handelt es sich um eine Möglichkeit, die Identität einer Person über ein soziales Konto zu bestätigen, anstatt Passwörter zu verwenden. Bei der Webentwicklung ist es immer hilfreich, Benutzer ohne Passwörter zu authentifizieren. Auf diese Weise können sie sich über soziale Apps wie Google, Twitter oder GitHub anmelden.

Die Aktivierung der sozialen Authentifizierung ist eine hervorragende Möglichkeit, die Sicherheit Ihrer Anwendung zu erhöhen, indem das Risiko häufiger Sicherheitslücken im Zusammenhang mit Passwörtern verringert wird. Dadurch wird auch das Benutzererlebnis Ihrer App verbessert, da sich Benutzer nicht viele Passwörter merken müssen.

Benutzerauthentifizierung in Django

Django bietet ein Standardauthentifizierungssystem, mit dem Entwickler arbeiten können. Dieses Authentifizierungssystem verwendet jedoch die traditionelle Authentifizierung, bei der Daten wie Benutzername, E-Mail-Adresse, Passwort, Vorname und Nachname des Benutzers manuell erfasst werden.

instagram viewer

Das Authentifizierungssystem von Django ist von Natur aus sehr allgemein gehalten und bietet nicht viele Funktionen, die heutzutage in den meisten Web-Authentifizierungssystemen verwendet werden. Um dies zu ergänzen, sollten Sie Pakete von Drittanbietern verwenden, z django-allauth Paket.

So aktivieren Sie OAuth in Django

Um Ihre Benutzer mithilfe von OAuth in einer Django-Anwendung zu authentifizieren, können Sie ein Django-Paket namens verwenden django-allauth.

Django Allauth ist ein Paket, das die Authentifizierung, Registrierung, Kontoverwaltung und Authentifizierung von Drittanbieterkonten (sozialen Konten) für Ihr Django-Projekt übernimmt. Die folgenden Schritte führen Sie zum Einrichten von Django Allauth für Ihr Django-Projekt.

Schritt 1: Django-Allauth installieren und einrichten

Wenn Sie dies noch nicht getan haben, Erstellen Sie eine virtuelle Umgebung und installieren django-allauth über pip:

pip install django-allauth

Beachten Sie, dass Sie Python 3.5 oder höher und Django 2.0 oder höher verwenden müssen, damit es funktioniert.

Schritt 2: Erforderliche Apps zu Django für Django-Allauth hinzufügen

Nach der Installation django-allauth, öffne dein Settings.py Datei und fügen Sie die folgenden Apps zu Ihrer hinzu INSTALLED_APPS Liste:

INSTALLED_APPS = [


Add your other apps here

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

Hier sind einige Punkte, die Sie bei einigen der oben genannten Apps beachten sollten:

  • Der allauth.socialaccount Mit der App können sich Benutzer über soziale Apps wie X (ehemals Twitter), Instagram, GitHub und andere anmelden.
  • Der django.contrib.sites app ist ein integriertes Django-Framework, das für erforderlich ist django-allauth arbeiten. Die App bietet die Möglichkeit, mehrere Sites innerhalb eines einzigen Django-Projekts zu verwalten und zu unterscheiden. Sie können verstehen, wie es funktioniert, indem Sie auf Folgendes verweisen Django-Dokumentation.

Schritt 3: Definieren Sie die Authentifizierungs-Backends für Ihr Projekt

Im nächsten Schritt legen Sie fest, wie Sie Ihre Benutzer authentifizieren möchten. Sie können dies tun, indem Sie das konfigurieren AUTHENTICATION_BACKENDS in deinem Settings.py Datei. Für django-allauth, sollten Sie Folgendes hinzufügen:

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

Das obige Code-Snippet definiert zwei Authentifizierungs-Backends:

  1. Die erste ist die von Django verwendete Standardeinstellung. Dadurch kann sich der Admin-Benutzer unabhängig von der Konfiguration von django-allauth beim Admin-Panel anmelden.
  2. Der zweite definiert das Authentifizierungs-Backend für django-allauth.

Schritt 4: Fügen Sie Ihre Site-ID hinzu

In Ihrer Einstellungsdatei sollten Sie die ID für Ihre Site hinzufügen. Hier ist ein Beispiel:

SITE_ID = 1

Standardmäßig gibt es eine Site mit dem Namen example.com im Admin-Bereich. Sie können diese Site ändern oder selbst eine hinzufügen. In jedem Fall sollten Sie sich beim Admin-Panel anmelden und zu navigieren Websites App.

Um die Site-ID für eine Django-Site zu erhalten, öffnen Sie Ihre Befehlszeilenschnittstelle (CLI) und führen Sie diesen Befehl aus:

python manage.py shell

Schreiben Sie als Nächstes dieses Skript in die Python-Shell:

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)

Der obige Code gibt den Namen der Site sowie ihre ID aus.

Schritt 5: Konfigurieren Sie Ihre URLs

In Ihrem Projekt urls.py Datei, konfigurieren Sie das URL-Muster für django-allauth. So sollte es aussehen:

from django.urls import path, include

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

Mit diesem Setup können Sie Ihren Entwicklungsserver starten und dorthin navigieren http://127.0.0.1:8000/accounts/. Wenn Sie haben DEBUGGEN einstellen WAHR, sollten Sie eine Liste der verfügbaren URL-Muster sehen django-allauth.

Wenn Sie die oben genannten Schritte ausgeführt haben, sollte Ihr Projekt für die soziale Authentifizierung bereit sein.

So implementieren Sie Google Login/Signup in Ihrer Django-App

Nach dem Einrichten django-allauth, sollten Sie bereit sein, Ihren Benutzern die Authentifizierung mit ihren sozialen Konten wie Google zu ermöglichen.

Schritt 1: Registrieren Sie Ihren Social-Account-Anbieter in Ihren installierten Apps

In deinem Settings.py In der Datei sollten Sie den Anbieter des sozialen Kontos hinzufügen INSTALLED_APPS. In diesem Fall ist es Google. Weitere Optionen sind Instagram, X usw.

INSTALLED_APPS = [


Add your other apps here

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

Schritt 2: Erstellen Sie Ihre Client-ID und Ihren geheimen Schlüssel bei Google

Um diesen Schritt abzuschließen, müssen Sie ein Google-Konto erstellt haben. Wenn Sie dies getan haben, führen Sie die folgenden Schritte aus:

  1. Gehen Sie rüber zum Google Cloud-Konsole um ein neues Projekt zu erstellen. Klicken Sie zunächst auf das Dropdown-Menü im Bild unten:
  2. Klicken Sie anschließend auf NEUES PROJEKT:
  3. Geben Sie einen Namen für Ihr Projekt ein und klicken Sie dann auf ERSTELLEN Taste:
  4. Klicken Sie bei ausgewähltem Projekt auf das Hamburger-Menü. Wählen APIs und Dienste, Dann Referenzen:
  5. Klicken Sie anschließend auf die Option mit der Aufschrift EINWILLIGUNGSBILDSCHIRM KONFIGURIEREN und auswählen Extern:
  6. Geben Sie auf der nächsten Seite einen Namen für Ihre App ein und fügen Sie bei Bedarf eine E-Mail-Adresse hinzu. Sie können die Konfigurationen auch für einige Anpassungen erkunden. Wenn Sie fertig sind, klicken Sie auf SPEICHERN UND FORTFAHREN.
  7. Wählen Sie im linken Menü aus Referenzen. Klicken Sie anschließend auf ANMELDEN ERSTELLEN und auswählen OAuth-Client-ID.
  8. Wählen Sie als Nächstes die aus Anwendungstyp und geben Sie einen Namen dafür ein. Für dieses Tutorial ist die Anwendungstyp wird sein Internetanwendung.
  9. Als nächstes fügen Sie URIs für die hinzu Autorisierte JavaScript-Ursprünge Und Autorisierte Weiterleitungs-URIs. Der Host Ihrer Website sollte der JavaScript-Ursprung sein und das System leitet Benutzer nach der Authentifizierung zum Umleitungs-URI weiter. Der Umleitungs-URI sollte normalerweise Folgendes enthalten: Ihr-Hostname/Konten/google/login/callback/. Für den Entwicklungsmodus lautet es: http://127.0.0.1:8000/accounts/google/login/callback/. Klicke auf ERSTELLEN wenn es einmal erledigt ist.
  10. Nachdem Sie die Anmeldeinformationen erstellt haben, können Sie Ihre kopieren Kunden ID oder Kundengeheimnis an einen sicheren Ort oder laden Sie sie als JSON-Dateien herunter.

Schritt 3: Fügen Sie Ihre Client-ID und Ihren geheimen Schlüssel zu Ihrer Django-App hinzu

Navigieren Sie nach dem Erstellen der erforderlichen Anmeldeinformationen zu http://127.0.0.1:8000/admin, wählen Soziale Anwendungen, und erstellen Sie eine neue soziale Anwendung. Befolgen Sie diese Schritte, um eine neue soziale App zu erstellen:

  1. Fügen Sie einen Anbieter hinzu. Der Anbieter bezieht sich auf die App, mit der Sie Ihren Benutzer authentifizieren. In diesem Fall ist es Google, in einem anderen Fall könnte es Snapchat sein.
  2. Geben Sie einen Namen für Ihre neue soziale App ein. Stellen Sie sicher, dass es sich um einen angemessenen Namen handelt
  3. Fügen Sie die ein Kunden ID Du hast von Google kopiert.
  4. Für die Geheimer Schlüssel, einfügen Kundengeheimnis Du hast von Google kopiert.
  5. Der Schlüssel Das Feld gilt nicht für die Authentifizierung bei Google. Ignorieren Sie es daher.
  6. Wählen Sie abschließend eine Site aus, mit der Sie die soziale Anwendung verknüpfen möchten.

Schritt 4: Testen Sie Ihre Google-Authentifizierung

Melden Sie sich von Ihrem Admin-Panel ab und navigieren Sie zu http://127.0.0.1:8000/accounts/login/. Sie sehen eine Option zum Anmelden über Google.

Klicken Sie darauf, um zum Einwilligungsbildschirm weiterzuleiten. Wählen Sie als Nächstes ein Konto aus, mit dem Sie sich anmelden möchten.

Sobald Sie ein Konto ausgewählt haben, werden Sie weitergeleitet http://127.0.0.1:8000/accounts/profile/. Das bedeutet, dass Ihre App einwandfrei funktioniert. Sie können benutzerdefinierte Vorlagen erstellen, um die Standardvorlagen zu ersetzen.

Verbesserung der Benutzerregistrierung durch soziale Authentifizierung in Django

Die Aktivierung der sozialen Authentifizierung ist eine großartige Möglichkeit, Ihren Benutzern eine großartige Erfahrung bei der Registrierung für Ihre Anwendung zu ermöglichen. Es gibt andere Möglichkeiten, die Authentifizierung in Django zu aktivieren, und Sie sollten diese erkunden, um zu entscheiden, was für Ihren Anwendungsfall am besten ist.