Contents

Cách xây dựng hệ thống xác thực xã hội ở Django bằng OAuth

Xác thực xã hội là một cách để xác nhận danh tính của một người thông qua tài khoản xã hội thay vì sử dụng mật khẩu. Trong quá trình phát triển web, việc xác thực người dùng mà không cần mật khẩu luôn hữu ích. Bằng cách này, họ có thể đăng nhập thông qua các ứng dụng xã hội như Google, Twitter hoặc GitHub.

Việc kích hoạt xác thực xã hội có thể tăng cường đáng kể tính an toàn và tính toàn vẹn của ứng dụng, giảm thiểu tính nhạy cảm với các điểm yếu tập trung vào mật khẩu phổ biến, đồng thời cải thiện trải nghiệm của người dùng cuối thông qua việc loại bỏ gánh nặng thu hồi nhiều thông tin đăng nhập.

Xác thực người dùng ở Django

Django cung cấp cơ chế xác thực tích hợp tạo điều kiện cho sự cộng tác liền mạch giữa các nhà phát triển. Tuy nhiên, nó sử dụng xác thực thông thường, yêu cầu nhập thông tin thủ công bao gồm tên người dùng, email, mật khẩu, tên và họ của người dùng.

Hệ thống xác thực mặc định của Django sở hữu cấu trúc cơ bản thiếu một số tính năng nâng cao thường thấy trong các khung xác thực web hiện đại. Do đó, chúng tôi khuyên bạn nên kết hợp các thành phần bổ sung, như thư viện django-allauth, có thể bổ sung và nâng cao chức năng của nó.

Cách bật OAuth ở Django

Để xác thực xác thực người dùng trong dự án Django sử dụng giao thức OAuth, người ta có thể sử dụng thư viện Django có tên là “django-allauth.

Django Allauth là giao diện lập trình ứng dụng được thiết kế để hợp lý hóa các quy trình xác thực, đăng ký và quản lý tài khoản người dùng trong khung phát triển web Django. Để thiết lập chức năng này trong dự án Django của bạn, hãy làm theo bộ hướng dẫn toàn diện được cung cấp bên dưới.

Bước 1: Cài đặt và thiết lập Django-Allauth

Nếu bạn chưa làm như vậy, bạn nên thiết lập một môi trường ảo và cài đặtdjango-allauth bằng pip. Điều này sẽ cho phép tích hợp allauth trong dự án Django của bạn.

 pip install django-allauth

Xin lưu ý rằng tính năng này chỉ tương thích với Python phiên bản 3.5 trở lên, cũng như Django framework phiên bản 2.0 trở lên.

Bước 2: Thêm ứng dụng cần thiết vào Django cho Django-Allauth

Sau khi cài đặt thư viện’django-allauth’, cần phải sửa đổi tệp cấu hình trong dự án bằng cách thêm danh sách các ứng dụng trong tham số “INSTALLED\_APPS” nằm trong tệp “settings.py”. Cụ thể, người ta phải bao gồm tên của ứng dụng cũng như bất kỳ phần phụ thuộc bổ sung nào có thể được yêu cầu để ứng dụng hoạt động bình thường.

 INSTALLED_APPS = [

    """
    Add your other apps here
    """

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

Một số cân nhắc chính cần được xem xét liên quan đến các ứng dụng nói trên, bao gồm các tính năng và khả năng của chúng.

Ứng dụng allauth.socialaccount tạo điều kiện xác thực người dùng thông qua nhiều nền tảng xã hội khác nhau, bao gồm nhưng không giới hạn ở X (trước đây gọi là Twitter), Instagram và GitHub.

⭐ Ứng dụng django.contrib.sites là một framework Django tích hợp cần thiết để django-allauth hoạt động. Ứng dụng cung cấp khả năng quản lý và phân biệt nhiều trang web trong một dự án Django. Bạn có thể hiểu cách thức hoạt động của nó bằng cách tham khảo Tài liệu Django.

Bước 3: Xác định phần phụ trợ xác thực cho dự án của bạn

Để thiết lập hệ thống xác thực người dùng, cần chỉ định phương pháp xác minh mong muốn cho người dùng. Điều này có thể đạt được bằng cách điều chỉnh cấu hình của AUTHENTICATION\_BACKENDS trong tệp settings.py. Cụ thể, đối với những người sử dụng thư viện django-allauth, nên kết hợp các thành phần nói trên.

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

Mã được cung cấp sẽ thiết lập một khung để triển khai và sử dụng nhiều cơ chế xác thực trong một ứng dụng, bằng cách xác định và định cấu hình hai thành phần phụ trợ riêng biệt, đó là “LOCAL” và “REMOTE”, làm nền tảng để xử lý các yêu cầu xác thực người dùng. Các chương trình phụ trợ này được thiết kế để dễ dàng tích hợp với nhiều khung và dịch vụ giao diện người dùng khác nhau, cho phép các nhà phát triển kết hợp liền mạch các tùy chọn xác thực linh hoạt và an toàn trong ứng dụng của họ.

Cài đặt ban đầu là tùy chọn tiêu chuẩn được Django sử dụng, cấp cho người dùng quản trị quyền truy cập vào bảng điều khiển quản trị bất kể mọi cấu hình được thực hiện thông qua django-allauth.

Django-Allauth, một ứng dụng Django giúp hợp lý hóa việc đăng ký và đăng nhập của người dùng trên nhiều tài khoản thông qua các dịch vụ của bên thứ ba như nhà cung cấp email/OAuth2, yêu cầu chương trình phụ trợ xác thực để hoạt động hiệu quả.

Bước 4: Thêm ID trang web của bạn

Để định cấu hình trang web của bạn đúng cách, điều cần thiết là phải bao gồm mã định danh duy nhất được gọi là ID trang web trong tệp cài đặt của bạn. Như một minh họa, đoạn mã sau đây minh họa cách có thể đạt được điều này:

 SITE_ID = 1

Cấu hình mặc định của bảng điều khiển quản trị bao gồm mục nhập cho “ http://example.com ”. Người dùng có tùy chọn thay đổi cài đặt này hoặc tạo trang web mới nếu muốn. Để làm như vậy, họ phải đăng nhập vào tài khoản của mình và truy cập ứng dụng “Trang web” trong bảng điều khiển.

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

Để truy xuất ID trang web được liên kết với một trang Django cụ thể bằng giao diện dòng lệnh, hãy làm theo các bước sau:1. Khởi chạy dấu nhắc lệnh hoặc thiết bị đầu cuối trên máy tính của bạn.2. Điều hướng đến thư mục mà bạn đã cài đặt Django framework.3. Chạy lệnh sau trong CLI:csspython management.py Sites –output=fields site_id {your-site-name}Thay thế {your-site-name} bằng tên của trang web Django cụ thể mà bạn muốn lấy nó NHẬN DẠNG. Lệnh quản lý site tạo một tệp JSON chứa thông tin về tất cả các trang web được định cấu hình trong dự án Django của bạn, bao gồm cả ID tương ứng của chúng.

 python manage.py shell

Thật vậy, để thực thi tập lệnh nói trên trong trình thông dịch Python, trước tiên người ta phải mở nó rồi nhập mã. Quá trình này có thể được thực hiện bằng cách sử dụng môi trường phát triển tích hợp (IDE) hoặc giao diện dòng lệnh (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)

Đoạn mã nói trên sẽ xuất ra cả danh pháp và số nhận dạng liên quan đến trang web được đề cập.

Bước 5: Định cấu hình URL của bạn

Để tích hợp Django Allauth trong cấu hình URL của dự án, trước tiên bạn phải đảm bảo rằng tệp’urls.py’tồn tại trong thư mục dự án của bạn. Nếu không, hãy tạo một mã và thêm đoạn mã cần thiết như hiển thị bên dưới:pythonfrom django.urls import pathfrom allauth.account.views import SignUpView, SignInViewapp_name=‘myproject’# thay thế bằng tên dự án của bạnurlpatterns=[path(‘signup/’, SignUpView.as_view(), name=‘signup’),path(’login/’, SignInView.as_view(), name=‘login’)]Đảm bảo thay thế 'myproject' bằng tên thật của dự án của bạn và bao gồm mọi mẫu URL bắt buộc bổ sung nếu cần.

 from django.urls import path, include

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

Việc sử dụng cấu hình này cho phép bạn khởi chạy máy chủ phát triển của mình và truy cập http://127.0.0.1:8000/accounts/ trong trình duyệt web của bạn. Khi cài đặt “DEBUG” được đặt thành “True”, các mẫu URL có sẵn của Django Allauth sẽ được hiển thị.

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

Khi bạn đã hoàn thành các bước được nêu trước đó, dự án của bạn hiện đã sẵn sàng để trải qua quá trình xác thực xã hội.

Cách triển khai Đăng nhập/Đăng ký Google trong ứng dụng Django của bạn

Sau khi cài đặt và cấu hình Django-Allauth, người dùng sẽ có khả năng tự xác thực bằng tài khoản mạng xã hội của họ, bao gồm cả những tài khoản do Google cung cấp.

Bước 1: Đăng ký nhà cung cấp tài khoản xã hội trong ứng dụng đã cài đặt của bạn

Để kết hợp tài khoản mạng xã hội trong cài đặt ứng dụng của bạn, cần phải đưa nền tảng mạng xã hội cụ thể đó làm ứng dụng đã cài đặt trong danh sách’INSTALLED\_APPS’nằm trong tệp’settings.py’của dự án của bạn. Ví dụ: nếu bạn muốn tích hợp Google, bạn chỉ cần thêm “Google” vào danh sách các ứng dụng đã cài đặt. Tương tự, các nền tảng xã hội khác như Instagram hoặc X cũng có thể được thêm vào danh sách này bằng cách thêm tên tương ứng của chúng.

 INSTALLED_APPS = [

    """
    Add your other apps here
    """

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

Bước 2: Tạo ID khách hàng và Khóa bí mật của bạn trên Google

Để tiếp tục thành công nhiệm vụ này, bạn bắt buộc phải có tài khoản Google hợp lệ. Trong trường hợp bạn đã thiết lập sẵn, vui lòng tham khảo các hướng dẫn sau:

⭐ Truy cập Google Cloud console để tạo dự án mới. Đầu tiên, nhấp vào menu thả xuống như trong hình bên dưới: /vi/images/google-console-interface.jpg

⭐ Tiếp theo bấm vào DỰ ÁN MỚI: /vi/images/select-new-project.jpg

⭐ Nhập tên cho dự án của bạn, sau đó nhấp vào nút TẠO: /vi/images/select-project-name.jpg

⭐ Với dự án của bạn đã được chọn, hãy nhấp vào menu hamburger. Chọn API & Dịch vụ, sau đó chọn Thông tin xác thực: /vi/images/select-credentials.jpg

⭐ Tiếp theo, nhấp vào tùy chọn CẤU HÌNH ĐỒNG Ý SCREEN và chọn Bên ngoài: /vi/images/configure-oauth-consent-screen.jpg

⭐ Trên trang tiếp theo, nhập tên cho ứng dụng của bạn và bao gồm email nếu cần. Bạn cũng có thể khám phá các cấu hình để có một số tùy chỉnh. Sau khi hoàn tất, hãy nhấp vào LƯU VÀ TIẾP TỤC. /vi/images/enter-app-name-and-email-for-consent-screen.jpg

⭐ Trên menu bên trái, chọn Thông tin xác thực. Sau đó, nhấp vào TẠO CREDENTIALS và chọn ID khách hàng OAuth. /vi/images/select-oauth-client-id.jpg

⭐ Tiếp theo, chọn loại Ứng dụng và nhập tên cho loại đó. Đối với hướng dẫn này, loại Ứng dụng sẽ là Ứng dụng web. /vi/images/select-app-type-and-enter-name.jpg

⭐ Tiếp theo, thêm URI cho Nguồn gốc JavaScript được ủy quyền và URI chuyển hướng được ủy quyền. Máy chủ lưu trữ trang web của bạn phải có nguồn gốc JavaScript và hệ thống sẽ chuyển hướng người dùng đến URI chuyển hướng sau khi xác thực. URI chuyển hướng thường phải chứa your-host-name/accounts/google/login/callback/. Đối với chế độ phát triển, nó sẽ là: http://127.0.0.1:8000/accounts/google/login/callback/. Nhấp vào TẠO khi hoàn tất. /vi/images/add-uris.jpg

⭐ Sau khi tạo thông tin xác thực, bạn có thể sao chép ID khách hàng hoặc bí mật Khách hàng của mình vào nơi an toàn hoặc tải chúng xuống dưới dạng tệp JSON. /vi/images/copy-credentials.jpg

Bước 3: Thêm ID khách hàng và khóa bí mật vào ứng dụng Django của bạn

Sau khi thiết lập thông tin xác thực truy cập cần thiết, vui lòng hướng trình duyệt web của bạn tới “ http://127.0.0.1:8000/admin ” và sau đó nhấp vào “Ứng dụng xã hội” từ các tùy chọn menu có sẵn. Tiếp theo, tiến hành bắt đầu tạo một ứng dụng xã hội mới bằng cách tuân thủ các hướng dẫn tiếp theo được nêu bên dưới:

Khi thêm nhà cung cấp xác thực mới vào một ứng dụng phần mềm, cần chỉ định dịch vụ mà thông qua đó người dùng sẽ được cấp quyền truy cập vào tài khoản của họ. Thực thể này thường được gọi là “nhà cung cấp” và có thể khác nhau tùy thuộc vào nền tảng đang được sử dụng. Ví dụ: nếu ứng dụng hỗ trợ tích hợp với thông tin xác thực tài khoản Google thì nhà cung cấp được thêm vào sẽ tương ứng với Google. Tương tự, nếu ứng dụng cho phép kết nối với thông tin đăng nhập Snapchat thì nhà cung cấp được chọn sẽ liên quan đến Snapchat.

Chắc chắn, tôi rất sẵn lòng hỗ trợ bạn nghĩ ra một cái tên phù hợp và tinh tế cho ứng dụng xã hội mới của bạn. Dưới đây là một số gợi ý dựa trên yêu cầu của bạn:1. SocialMingle-Tên này gợi ý rằng người dùng có thể kết nối và hòa nhập với những người khác thông qua nền tảng. Nó hấp dẫn và dễ nhớ.2. ConnectionsHub-Tên này ngụ ý rằng ứng dụng đóng vai trò là trung tâm nơi mọi người có thể kết nối với nhau. Nghe có vẻ chuyên nghiệp và đáng tin cậy.3. FriendFinderX-Tên này có thể hoạt động tốt nếu ứng dụng của bạn tập trung vào việc giúp mọi người tìm thấy bạn bè hoặc đối tác lãng mạn tiềm năng. Tuy nhiên, hãy lưu ý đến hàm ý của nó, có thể không phù hợp với mọi đối tượng.4. LinkUpNow-Tên này nhấn mạnh ý tưởng

Vui lòng cung cấp bí mật an toàn và bảo mật của khách hàng được lấy từ Google. Bí mật này sẽ được sử dụng làm khóa mã hóa để trao đổi thông tin nhạy cảm của chúng tôi.

Quá trình xác thực với Google không bị ảnh hưởng bởi trường khóa được chỉ định và cần được bỏ qua.

Cuối cùng, hãy chọn một nền tảng để tích hợp công cụ truyền thông xã hội.

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

Bước 4: Kiểm tra xác thực Google của bạn

Vui lòng đăng xuất khỏi giao diện quản trị của bạn và sau đó tiếp tục đến http://127.0.0.1:8000/accounts/login/. Khi đến trang này, bạn sẽ thấy tùy chọn đăng nhập có sẵn thông qua Google.

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

Vui lòng nhấp vào tùy chọn nói trên để được chuyển hướng đến màn hình đồng ý. Sau đó, vui lòng chọn một tài khoản phù hợp để tiến hành đăng nhập.

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

Khi chọn một tài khoản cụ thể, một tài khoản sẽ được chuyển hướng đến http://127.0.0.1:8000/accounts/profile/ (sau đây gọi là “tài khoản URL đích”), đóng vai trò là bằng chứng về hoạt động thành công của ứng dụng. Ngoài ra, người dùng có thể phát triển các mẫu được cá nhân hóa khác với bộ tiêu chuẩn để phù hợp hơn với sở thích và yêu cầu của họ.

Tăng cường đăng ký người dùng với xác thực xã hội ở Django

Việc kích hoạt xác thực xã hội có thể nâng cao đáng kể trải nghiệm đăng ký người dùng trong ứng dụng của bạn. Mặc dù tồn tại các phương pháp thay thế để kích hoạt xác thực ở Django, nhưng bạn nên thận trọng xem xét tính phù hợp của chúng dựa trên yêu cầu cụ thể của mình.