Pelajari cara membuat sistem masuk aman dengan akun media sosial di Django menggunakan OAuth.

Otentikasi sosial adalah cara untuk mengonfirmasi identitas seseorang melalui akun sosial alih-alih menggunakan kata sandi. Dalam pengembangan web, mengautentikasi pengguna tanpa kata sandi selalu membantu. Dengan cara ini, mereka dapat masuk melalui aplikasi sosial seperti Google, Twitter, atau GitHub.

Mengaktifkan autentikasi sosial adalah cara terbaik untuk meningkatkan keamanan aplikasi Anda dengan mengurangi risiko kerentanan umum terkait kata sandi. Ini juga akan meningkatkan pengalaman pengguna aplikasi Anda karena pengguna tidak perlu mengingat banyak kata sandi.

Otentikasi Pengguna di Django

Django menyediakan sistem otentikasi default bagi pengembang untuk bekerja dengannya. Namun, sistem otentikasi ini menggunakan otentikasi tradisional, yang melibatkan pengumpulan data secara manual seperti nama pengguna, email, kata sandi, nama depan, dan nama belakang pengguna.

Secara desain, sistem otentikasi Django sangat umum dan tidak menyediakan banyak fitur yang digunakan di sebagian besar sistem otentikasi web saat ini. Untuk melengkapi ini, Anda dapat menggunakan paket pihak ketiga seperti

instagram viewer
Django-allauth kemasan.

Cara Mengaktifkan OAuth di Django

Untuk mengautentikasi pengguna Anda menggunakan OAuth dalam aplikasi Django, Anda dapat menggunakan paket Django yang disebut Django-allauth.

Django Allauth adalah paket yang menangani otentikasi, pendaftaran, manajemen akun, dan otentikasi akun pihak ketiga (sosial) untuk proyek Django Anda. Langkah-langkah berikut akan memandu Anda dalam menyiapkan Django Allauth untuk proyek Django Anda.

Langkah 1: Instal dan Atur Django-Allauth

Jika Anda belum melakukannya, menciptakan lingkungan virtual dan instal Django-allauth melalui pip:

pip install django-allauth

Perhatikan bahwa Anda harus menggunakan Python 3.5 atau lebih tinggi dan Django 2.0 atau lebih tinggi agar dapat berfungsi.

Langkah 2: Tambahkan Aplikasi yang Diperlukan ke Django untuk Django-Allauth

Setelah menginstal Django-allauth, bukalah pengaturan.py file dan tambahkan aplikasi berikut ke file Anda DIINSTALLED_APPS daftar:

INSTALLED_APPS = [


Add your other apps here

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

Berikut beberapa hal yang perlu diperhatikan tentang beberapa aplikasi di atas:

  • Itu allauth.socialaccount aplikasi akan memungkinkan pengguna masuk melalui aplikasi sosial seperti X (sebelumnya Twitter), Instagram, GitHub, dan lainnya.
  • Itu django.contrib.sites app adalah kerangka kerja Django bawaan yang diperlukan untuk Django-allauth bekerja. Aplikasi ini menyediakan kemampuan untuk mengelola dan membedakan beberapa situs dalam satu proyek Django. Anda dapat memahami cara kerjanya dengan mengacu pada Dokumentasi Django.

Langkah 3: Tentukan Backend Otentikasi untuk Proyek Anda

Langkah berikutnya adalah menentukan bagaimana Anda ingin mengautentikasi pengguna Anda. Anda dapat melakukan ini dengan mengkonfigurasi AUTHENTICATION_BACKENDS di dalam kamu pengaturan.py mengajukan. Untuk Django-allauth, Anda harus menambahkan ini:

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

Cuplikan kode di atas mendefinisikan dua backend autentikasi:

  1. Yang pertama adalah yang default yang digunakan oleh Django. Ini akan mengijinkan pengguna admin untuk masuk ke panel admin terlepas dari konfigurasi Django-allauth.
  2. Yang kedua mendefinisikan backend otentikasi Django-allauth.

Langkah 4: Tambahkan ID Situs Anda

Di file pengaturan Anda, Anda harus menambahkan ID untuk situs Anda. Berikut ini contohnya:

SITE_ID = 1

Secara default, ada situs bernama contoh.com di panel admin. Anda dapat memutuskan untuk memodifikasi situs ini atau menambahkannya sendiri. Apa pun kasusnya, Anda harus masuk ke panel admin dan menavigasi ke Situs aplikasi.

Untuk mendapatkan ID situs untuk situs Django, buka Antarmuka Baris Perintah (CLI) dan jalankan perintah ini:

python manage.py shell

Selanjutnya, tulis skrip ini ke dalam 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)

Kode di atas akan mencetak nama situs beserta ID-nya.

Langkah 5: Konfigurasikan URL Anda

Di proyek Anda urls.py file, konfigurasikan pola URL untuk Django-allauth. Seperti inilah tampilannya:

from django.urls import path, include

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

Dengan pengaturan ini, Anda dapat memulai server pengembangan dan menavigasi ke http://127.0.0.1:8000/accounts/. kalau sudah DEBUG mulai BENAR, Anda akan melihat daftar pola URL yang tersedia Django-allauth.

Jika Anda telah melakukan hal di atas, proyek Anda seharusnya siap untuk otentikasi sosial.

Bagaimana Menerapkan Login/Daftar Google di Aplikasi Django Anda

Setelah pengaturan Django-allauth, Anda harus siap membiarkan pengguna mengautentikasi dirinya dengan akun sosial mereka seperti Google.

Langkah 1: Daftarkan Penyedia Akun Sosial Anda di Aplikasi yang Anda Instal

Di dalam kamu pengaturan.py file, Anda harus menambahkan penyedia akun sosial DIINSTALLED_APPS. Dalam hal ini, itu adalah Google. Pilihan lainnya adalah Instagram, X, dll.

INSTALLED_APPS = [


Add your other apps here

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

Langkah 2: Buat ID Klien dan Kunci Rahasia Anda di Google

Untuk menyelesaikan langkah ini, Anda harus sudah membuat akun Google. Jika sudah, ikuti langkah berikut ini:

  1. Pergilah ke Konsol Google Cloud untuk membuat proyek baru. Pertama, klik pada drop-down yang ditunjukkan pada gambar di bawah ini:
  2. Selanjutnya, klik PROYEK BARU:
  3. Masukkan nama untuk proyek Anda, lalu klik MEMBUAT tombol:
  4. Dengan proyek Anda dipilih, klik menu hamburgernya. Pilih API & Layanan, Kemudian Kredensial:
  5. Selanjutnya, klik opsi yang bertuliskan KONFIGURASI LAYAR PERSETUJUAN dan pilih Luar:
  6. Di halaman berikutnya, masukkan nama untuk aplikasi Anda dan sertakan email jika diperlukan. Anda juga dapat menjelajahi konfigurasi untuk beberapa penyesuaian. Setelah selesai, klik SIMPAN DAN LANJUTKAN.
  7. Di menu sebelah kiri, pilih Kredensial. Setelah itu, klik BUAT KREDENSIAL dan pilih ID klien OAuth.
  8. Selanjutnya, pilih Tipe aplikasi dan masukkan nama yang sama. Untuk tutorial ini, Tipe aplikasi akan aplikasi web.
  9. Selanjutnya, tambahkan URI untuk Asal JavaScript resmi Dan URI pengalihan resmi. Host situs web Anda harus asal JavaScript, dan sistem akan mengarahkan pengguna ke URI pengalihan setelah autentikasi. URI pengalihan biasanya berisi nama-host-Anda/akun/google/login/panggilan balik/. Untuk mode pengembangan, itu akan menjadi: http://127.0.0.1:8000/accounts/google/login/callback/. Klik MEMBUAT ketika sekali selesai.
  10. Setelah membuat kredensial, Anda dapat menyalin ID Klien atau Rahasia klien ke tempat yang aman atau unduh sebagai file JSON.

Langkah 3: Tambahkan ID Klien dan Kunci Rahasia Anda ke Aplikasi Django Anda

Setelah membuat kredensial yang diperlukan, navigasikan ke http://127.0.0.1:8000/admin, Pilih Aplikasi sosial, dan buat aplikasi sosial baru. Ikuti langkah-langkah berikut untuk membuat aplikasi sosial baru:

  1. Tambahkan penyedia. Penyedia mengacu pada aplikasi yang Anda gunakan untuk mengautentikasi pengguna Anda. Dalam hal ini, Google, dalam kasus lain, mungkin Snapchat.
  2. Masukkan nama untuk aplikasi sosial baru Anda. Pastikan itu adalah nama yang masuk akal
  3. Tempel di ID Klien Anda menyalin dari Google.
  4. Untuk Kunci rahasia, tempelkan di Rahasia klien Anda menyalin dari Google.
  5. Itu Kunci bidang ini tidak berlaku untuk autentikasi dengan Google, jadi abaikan saja.
  6. Terakhir, pilih situs untuk dikaitkan dengan aplikasi sosial.

Langkah 4: Uji Otentikasi Google Anda

Keluar dari panel admin Anda dan navigasikan ke http://127.0.0.1:8000/accounts/login/. Anda akan melihat opsi untuk masuk melalui Google.

Klik untuk mengalihkan ke layar persetujuan. Selanjutnya, pilih akun untuk login.

Setelah Anda memilih akun, Anda akan diarahkan ke http://127.0.0.1:8000/accounts/profile/. Ini berarti aplikasi Anda berfungsi dengan sempurna. Anda dapat membuat templat khusus untuk menggantikan templat default.

Meningkatkan Pendaftaran Pengguna Dengan Otentikasi Sosial di Django

Mengaktifkan autentikasi sosial adalah cara terbaik untuk membantu pengguna Anda mendapatkan pengalaman luar biasa saat mendaftar untuk aplikasi Anda. Ada cara lain untuk mengaktifkan otentikasi di Django, dan Anda harus menjelajahinya untuk memutuskan apa yang terbaik untuk kasus penggunaan Anda.