Jak zbudować społecznościowy system uwierzytelniania w Django przy użyciu OAuth?
Uwierzytelnianie społecznościowe to sposób na potwierdzenie tożsamości osoby za pośrednictwem konta społecznościowego zamiast używania haseł. W tworzeniu stron internetowych zawsze pomocne jest uwierzytelnianie użytkowników bez haseł. W ten sposób mogą oni logować się za pośrednictwem aplikacji społecznościowych, takich jak Google, Twitter lub GitHub.
Uwierzytelnianie społecznościowe może znacznie zwiększyć bezpieczeństwo i integralność aplikacji, minimalizując podatność na powszechne słabości związane z hasłami, a jednocześnie poprawiając wrażenia użytkownika końcowego poprzez wyeliminowanie ciężaru przywoływania wielu danych logowania.
Uwierzytelnianie użytkownika w Django
Django oferuje wbudowany mechanizm uwierzytelniania, który ułatwia płynną współpracę między programistami. Niemniej jednak, wykorzystuje on konwencjonalne uwierzytelnianie, wymagające ręcznego wprowadzania informacji, w tym nazw użytkowników, e-maili, haseł, imion i nazwisk od użytkowników.
Domyślny system uwierzytelniania Django posiada podstawową strukturę, w której brakuje kilku zaawansowanych funkcji powszechnie spotykanych we współczesnych frameworkach uwierzytelniania sieciowego. Dlatego też wysoce zalecane jest włączenie dodatkowych komponentów, takich jak biblioteka django-allauth, które mogą uzupełnić i poprawić jego funkcjonalność.
Jak włączyć OAuth w Django
Aby zweryfikować uwierzytelnianie użytkownika w projekcie Django wykorzystującym protokół OAuth, można użyć biblioteki Django znanej jako “django-allauth”.
Django Allauth jest interfejsem programowania aplikacji zaprojektowanym w celu usprawnienia procesów uwierzytelniania użytkowników, rejestracji i zarządzania kontami w ramach frameworka Django. Aby ustanowić tę funkcjonalność w swoim projekcie Django, postępuj zgodnie z kompleksowym zestawem instrukcji podanych poniżej.
Krok 1: Zainstaluj i skonfiguruj Django-Allauth
Jeśli jeszcze tego nie zrobiłeś, zaleca się utworzenie wirtualnego środowiska i zainstalowanieldjango-allauth za pomocą pip. Pozwoli to na integrację allauth w twoim projekcie Django.
pip install django-allauth
Należy pamiętać, że ta funkcja jest kompatybilna tylko z Pythonem w wersji 3.5 lub nowszej, a także frameworkiem Django w wersji 2.0 lub nowszej.
Krok 2: Dodaj wymagane aplikacje do Django dla Django-Allauth
Po zainstalowaniu biblioteki “django-allauth” należy zmienić plik konfiguracyjny w projekcie, dodając listę aplikacji w parametrze “INSTALLED\_APPS” znajdującym się w pliku “settings.py”. W szczególności należy podać nazwę aplikacji, a także wszelkie dodatkowe zależności, które mogą być wymagane do jej prawidłowego działania.
INSTALLED_APPS = [
"""
Add your other apps here
"""
# Djang Allauth configuration apps
'django.contrib.sites',
'allauth',
'allauth.account',
'allauth.socialaccount',
]
Należy wziąć pod uwagę kilka kluczowych kwestii dotyczących wyżej wymienionych aplikacji, w tym ich funkcji i możliwości.
Aplikacja allauth.socialaccount ułatwia uwierzytelnianie użytkowników za pośrednictwem różnych platform społecznościowych, w tym między innymi X (wcześniej znanego jako Twitter), Instagram i GitHub.
⭐ Aplikacja django.contrib.sites jest wbudowanym frameworkiem Django, który jest wymagany do działania django-allauth. Aplikacja zapewnia możliwość zarządzania i różnicowania wielu witryn w ramach jednego projektu Django. Możesz zrozumieć, jak to działa, odwołując się do dokumentacji Django .
Krok 3: Zdefiniuj backend uwierzytelniania dla swojego projektu
Aby ustanowić system uwierzytelniania użytkowników, konieczne jest określenie pożądanej metody weryfikacji użytkowników. Można to osiągnąć poprzez dostosowanie konfiguracji AUTHENTICATION\_BACKENDS w pliku settings.py. W szczególności, dla osób korzystających z biblioteki django-allauth, zalecane jest włączenie wyżej wymienionych komponentów.
AUTHENTICATION_BACKENDS = [
'django.contrib.auth.backends.ModelBackend',
'allauth.account.auth_backends.AuthenticationBackend',
]
Dostarczony kod ustanawia ramy do implementacji i wykorzystania wielu mechanizmów uwierzytelniania w aplikacji, poprzez zdefiniowanie i skonfigurowanie dwóch odrębnych komponentów backendu, a mianowicie “LOCAL” i “REMOTE”, które służą jako podstawa do obsługi żądań uwierzytelniania użytkowników. Te backendy są zaprojektowane tak, aby można je było łatwo zintegrować z różnymi frameworkami i usługami frontendowymi, umożliwiając programistom płynne włączanie elastycznych i bezpiecznych opcji uwierzytelniania do swoich aplikacji.
Początkowe ustawienie jest standardową opcją stosowaną przez Django, która przyznaje użytkownikowi administracyjnemu dostęp do panelu administracyjnego niezależnie od jakichkolwiek konfiguracji dokonanych przez django-allauth.
Django-Allauth, aplikacja Django, która usprawnia rejestrację użytkowników i logowanie na wielu kontach za pośrednictwem usług stron trzecich, takich jak dostawcy poczty e-mail/OAuth2, wymaga backendu uwierzytelniania, aby działać efektywnie.
Krok 4: Dodaj identyfikator witryny
Aby poprawnie skonfigurować witrynę, konieczne jest dodanie unikalnego identyfikatora znanego jako identyfikator witryny w pliku ustawień. Jako ilustracja, poniższy fragment kodu pokazuje, jak można to osiągnąć:
SITE_ID = 1
Domyślna konfiguracja panelu administracyjnego zawiera wpis " http://example.com “. Użytkownicy mają możliwość zmiany tego ustawienia lub utworzenia nowej witryny, jeśli jest to pożądane. Aby to zrobić, muszą zalogować się na swoje konto i uzyskać dostęp do aplikacji “Witryny” w panelu sterowania.
Aby pobrać identyfikator witryny powiązany z konkretną witryną Django za pomocą interfejsu wiersza poleceń, wykonaj następujące kroki:1. Uruchom wiersz polecenia lub terminal na swoim komputerze.2.Przejdź do katalogu, w którym zainstalowałeś framework Django.3. Uruchom następujące polecenie w CLI:csspython manage.py sites -output=fields site_id {your-site-name}Zastąp {your-site-name}
nazwą konkretnej witryny Django, dla której chcesz uzyskać identyfikator. Komenda zarządzająca sites
generuje plik JSON zawierający informacje o wszystkich witrynach skonfigurowanych w twoim projekcie Django, w tym odpowiadające im ID.
python manage.py shell
Rzeczywiście, aby wykonać wspomniany skrypt w interpreterze Pythona, należy go najpierw otworzyć, a następnie wprowadzić kod. Proces ten można wykonać za pomocą zintegrowanego środowiska programistycznego (IDE) lub interfejsu wiersza poleceń (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)
Powyższy kod wyświetli zarówno nomenklaturę, jak i identyfikator powiązany z daną stroną internetową.
Krok 5: Skonfiguruj adresy URL
Aby zintegrować Django Allauth z konfiguracją adresów URL twojego projektu, musisz najpierw upewnić się, że plik “urls.py” istnieje w katalogu twojego projektu. Jeśli nie, utwórz go i dodaj niezbędny fragment kodu, jak pokazano poniżej:pythonfrom django.urls import pathfrom allauth.account.views import SignUpView, SignInViewapp_name = ‘myproject’ # replace with your project nameurlpatterns = [path(‘signup/’, SignUpView.as_view(), name=‘signup’),path(’login/’, SignInView.as_view(), name=‘login’)]Upewnij się, że zastąpiłeś 'myproject'
rzeczywistą nazwą projektu i w razie potrzeby dołącz wszelkie dodatkowe wymagane wzorce URL.
from django.urls import path, include
urlpatterns = [
# Djang-allauth url pattern
path('accounts/', include('allauth.urls')),
]
Wykorzystanie tej konfiguracji umożliwia uruchomienie serwera deweloperskiego i uzyskanie dostępu do http://127.0.0.1:8000/accounts/ w przeglądarce internetowej. Gdy ustawienie “DEBUG” jest ustawione na “True”, wyświetlane są dostępne wzorce URL Django Allauth.
Po wykonaniu kroków opisanych wcześniej, twój projekt jest teraz przygotowany do poddania się uwierzytelnianiu społecznościowemu.
How to Implement Google Login/Signup in Your Django App
Po zainstalowaniu i skonfigurowaniu Django-Allauth, użytkownicy będą mieli możliwość uwierzytelniania się za pomocą swoich kont w mediach społecznościowych, w tym tych dostarczanych przez Google.
Krok 1: Zarejestruj dostawcę konta społecznościowego w zainstalowanych aplikacjach
Aby włączyć konto mediów społecznościowych do ustawień aplikacji, konieczne jest uwzględnienie określonej platformy mediów społecznościowych jako zainstalowanej aplikacji na liście “INSTALLED\_APPS” znajdującej się w pliku “settings.py” projektu. Na przykład, jeśli chcesz zintegrować Google, po prostu dodaj “Google” do listy zainstalowanych aplikacji. Podobnie, inne platformy społecznościowe, takie jak Instagram lub X mogą być również dodane do tej listy poprzez dodanie ich odpowiednich nazw.
INSTALLED_APPS = [
"""
Add your other apps here
"""
# Social account provider (google)
'allauth.socialaccount.providers.google',
]
Krok 2: Utwórz identyfikator klienta i tajny klucz w Google
Aby pomyślnie wykonać to zadanie, konieczne jest posiadanie ważnego konta Google. Jeśli już je posiadasz, zapoznaj się z poniższymi wskazówkami:
⭐ Przejdź do konsoli Google Cloud , aby utworzyć nowy projekt. Najpierw kliknij listę rozwijaną pokazaną na poniższym obrazku:
⭐ Następnie kliknij NOWY PROJEKT:
⭐ Wprowadź nazwę projektu, a następnie kliknij przycisk UTWÓRZ:
⭐ Po wybraniu projektu kliknij menu hamburgera . Wybierz APIs & Services , a następnie Credentials :
⭐ Następnie kliknij opcję CONFIGURE CONSENT SCREEN i wybierz External :
⭐ Na następnej stronie wprowadź nazwę aplikacji i w razie potrzeby podaj adres e-mail. Możesz także zapoznać się z konfiguracjami w celu dostosowania. Po zakończeniu kliknij ZAPISZ I KONTYNUUJ .
⭐ W menu po lewej stronie wybierz Credentials . Następnie kliknij CREATE CREDENTIALS i wybierz OAuth client ID .
⭐ Następnie wybierz typ aplikacji i wprowadź jej nazwę. W tym samouczku typem aplikacji będzie aplikacja internetowa.
⭐ Następnie dodaj URI dla autoryzowanych źródeł JavaScript i autoryzowanych URI przekierowań. Host Twojej witryny powinien być źródłem JavaScript, a system przekieruje użytkowników do przekierowującego identyfikatora URI po uwierzytelnieniu. Identyfikator URI przekierowania powinien zazwyczaj zawierać your-host-name/accounts/google/login/callback /. W trybie deweloperskim będzie to: http://127.0.0.1:8000/accounts/google/login/callback/ . Po zakończeniu kliknij UTWÓRZ.
⭐ Po utworzeniu poświadczeń możesz skopiować swój identyfikator klienta lub sekret klienta w bezpieczne miejsce lub pobrać je jako pliki JSON.
Krok 3: Dodaj identyfikator klienta i tajny klucz do aplikacji Django
Po ustaleniu wymaganych poświadczeń dostępu, skieruj przeglądarkę internetową do " http://127.0.0.1:8000/admin “, a następnie kliknij “Aplikacje społecznościowe” z dostępnych opcji menu. Następnie należy zainicjować tworzenie nowej aplikacji społecznościowej, postępując zgodnie z kolejnymi instrukcjami opisanymi poniżej:
Dodając nowego dostawcę uwierzytelniania w aplikacji, konieczne jest określenie usługi, za pośrednictwem której użytkownicy otrzymają dostęp do swoich kont. Podmiot ten jest powszechnie określany jako “dostawca” i może się różnić w zależności od wykorzystywanej platformy. Na przykład, jeśli aplikacja obsługuje integrację z poświadczeniami konta Google, wówczas dodany dostawca odpowiadałby Google. Podobnie, jeśli aplikacja umożliwia połączenie z danymi logowania Snapchat, wówczas wybrany dostawca będzie dotyczył Snapchat.
Z pewnością chętnie pomogę ci w wymyśleniu odpowiedniej i dopracowanej nazwy dla twojej nowej aplikacji społecznościowej. Oto kilka sugestii opartych na Twoich wymaganiach:1. SocialMingle - Ta nazwa sugeruje, że użytkownicy mogą łączyć się i mieszać z innymi za pośrednictwem platformy. Jest chwytliwa i łatwa do zapamiętania.2. ConnectionsHub - ta nazwa sugeruje, że aplikacja służy jako centralne centrum, w którym ludzie mogą nawiązywać ze sobą kontakty. Brzmi profesjonalnie i wiarygodnie.3. FriendFinderX - ta nazwa może dobrze działać, jeśli aplikacja koncentruje się na pomaganiu ludziom w znajdowaniu przyjaciół lub potencjalnych partnerów romantycznych. Należy jednak pamiętać o jej konotacji, która może nie być odpowiednia dla wszystkich odbiorców.4. LinkUpNow - Ta nazwa podkreśla ideę
Uprzejmie prosimy o podanie bezpiecznego i poufnego sekretu klienta uzyskanego od Google, który zostanie wykorzystany jako klucz szyfrujący do naszej wymiany poufnych informacji.
Określone pole klucza nie ma wpływu na proces uwierzytelniania w Google i należy je zignorować.
Ostatecznie należy wybrać platformę, na której zostanie zintegrowane narzędzie społecznościowe.
Krok 4: Przetestuj uwierzytelnianie Google
Wyloguj się z interfejsu administracyjnego, a następnie przejdź do http://127.0.0.1:8000/accounts/login/ . Po wejściu na tę stronę zauważysz opcję logowania dostępną za pośrednictwem Google.
Kliknij wspomnianą opcję, aby zostać przekierowanym do ekranu zgody. W tym miejscu należy wybrać odpowiednie konto, aby kontynuować logowanie.
Po wybraniu konkretnego konta użytkownik zostanie przekierowany na stronę http://127.0.0.1:8000/accounts/profile/ (zwaną dalej “docelowym adresem URL”), która służy jako dowód pomyślnego działania aplikacji. Ponadto użytkownicy mogą opracowywać spersonalizowane szablony, które odbiegają od standardowego zestawu, aby lepiej odpowiadały ich preferencjom i wymaganiom.
Ulepszanie rejestracji użytkowników dzięki uwierzytelnianiu społecznościowemu w Django
Uwierzytelnianie społecznościowe może znacznie poprawić doświadczenia związane z rejestracją użytkowników w aplikacji. Chociaż istnieją alternatywne metody włączania uwierzytelniania w Django, rozsądnie byłoby rozważyć ich przydatność w oparciu o konkretne wymagania.