Contents

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.

/pl/images/add-new-site.jpg

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.

/pl/images/url-patterns-available-in-django-allauth.jpg

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: /pl/images/google-console-interface.jpg

⭐ Następnie kliknij NOWY PROJEKT: /pl/images/select-new-project.jpg

⭐ Wprowadź nazwę projektu, a następnie kliknij przycisk UTWÓRZ: /pl/images/select-project-name.jpg

⭐ Po wybraniu projektu kliknij menu hamburgera . Wybierz APIs & Services , a następnie Credentials : /pl/images/select-credentials.jpg

⭐ Następnie kliknij opcję CONFIGURE CONSENT SCREEN i wybierz External : /pl/images/configure-oauth-consent-screen.jpg

⭐ 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 . /pl/images/enter-app-name-and-email-for-consent-screen.jpg

⭐ W menu po lewej stronie wybierz Credentials . Następnie kliknij CREATE CREDENTIALS i wybierz OAuth client ID . /pl/images/select-oauth-client-id.jpg

⭐ Następnie wybierz typ aplikacji i wprowadź jej nazwę. W tym samouczku typem aplikacji będzie aplikacja internetowa. /pl/images/select-app-type-and-enter-name.jpg

⭐ 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. /pl/images/add-uris.jpg

⭐ Po utworzeniu poświadczeń możesz skopiować swój identyfikator klienta lub sekret klienta w bezpieczne miejsce lub pobrać je jako pliki JSON. /pl/images/copy-credentials.jpg

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.

/pl/images/add-google-credentials-to-admin-panel.jpg

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.

/pl/images/django-allauth-sign-in-with-google.jpg

Kliknij wspomnianą opcję, aby zostać przekierowanym do ekranu zgody. W tym miejscu należy wybrać odpowiednie konto, aby kontynuować logowanie.

/pl/images/google-consent-screen.jpg

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.