Single Sign On cho WordPress không dùng dịch vụ bên thứ 3

0
515
(Last Updated On: Th10 17, 2018)

Single Sign On hiểu nôm na có nghĩa là đăng nhập một lần tại một hệ thống nào đó và sau đó tiếp tục được đăng nhập tại các hệ thống khác mà không phải nhập lại thông tin xác thực (username, mật khẩu hoặc khóa bảo mật) thêm lần nữa.

Thực tế có nhiều Website cho phép đăng nhập bằng tài khoản Google, Facebook hay Twitter. Chính điều này mang lại sự tiện lợi lớn cho người dùng, không phải tốn công tạo một tài khoản mới, và đôi khi các công ty lớn họ lưu trữ dữ liệu thông tin xác thực của người dùng an toàn hơn là các công ty hay tổ chức nhỏ lẻ. Bạn cứ tưởng tượng một Start-up về công nghệ cho phép bạn đăng ký thành viên, một trang web chia sẻ ảnh và video, rồi một số trang lại cung cấp dịch vụ nào đó yêu cầu bạn đăng ký, đôi khi bạn chẳng yên tâm lắm, thay vì đó nếu họ cho phép đăng nhập bằng tài khoản Google hay Facebook, bạn sẽ không phải lo lắng gì nhiều.

Trong bài viết ngày hôm nay, mình có một vấn đề đặt ra đó là trang VnGeek.com (tiếng Việt) hoạt động song song với trang en.VnGeek.com (tiếng Anh). Mình muốn mỗi khi đăng nhập trên trang VnGeek.com, nếu người dùng truy cập địa chỉ https://en.vngeek.com và lựa chọn Single Sign On thì cũng sẽ được tự động đăng nhập luôn. Không cần phải đăng ký thành viên và đăng nhập nữa. Nếu đây là một thống WordPress Multisite thì không cần phải làm điều này, nhưng đây là hai trang hoạt động hoàn toàn độc lập cho nên mình phải có giải pháp nào đó tốt hơn. Và mình lựa chọn Single Sign On là giải pháp thiết thực nhất.

Mô hình biểu diễn Single Sign On trên WordPress.

Công việc cũng khá là đơn giản vì chúng ta đều sử dụng Plugin. Điểm mạnh của WordPress chính là nhờ hệ thống Plugin và Theme mở rộng không giới hạn.

Mình sử dụng bộ công cụ Oauth Server/Client của trang https://wp-oauth.com của Dash10 Digital. Mình thấy bộ Plugin này khá hiệu quả, bạn cũng có thể mua bản trả phí để sử dụng nhiều chức năng và mở rộng cho nhiều client hơn.

Trước tiên, chúng ta cần cài đặt WP OAuth Server trên VnGeek.com, bạn cài đặt Plugin bình thường nhé.

Cài đặt xong sẽ xuất hiện thêm trình đơn Menu OAuth Server.

Phần cấu hình nâng cao của OAuth Server.

Bạn đừng quên sau khi thiết lập thì đánh tick chọn 
OAuth Server Enabled ở Tab General Settings nhé.

Nhớ Lưu các thay đổi nhé các bạn.

Ở phiên bản miễn phí, chúng ta được sử dụng phương thức Authorization Code hoặc Implicit. Ở đây mình chọn phương thức 
Authorization Code.

Trước khi đến phần tạo một kết nối với Client, chúng ta vào https://en.vngeek.com và cài đặt Single Sign On Client lên đây đã. Bạn tải về Plugin OAuth Client (Single Sign On). Sau đó kích hoạt bình thường nhé.

 Sau khi kích hoạt, vào Settings –> Single Sign On để xem cấu hình.

Các bạn chú ý dòng  Redirect URI:  https://en.vngeek.com/?auth=sso

Quay trở lại với phần cấu hình trên OAuth Server, bạn vào

OAuth Server –> Client

Đặt tên cho Client Name

Dán dòng  Redirect URI là  https://en.vngeek.com/?auth=sso vào ô 
Redirect URI ở phần thiết lập Client Information.

Làm như các bước như trên hình.

Bây giờ chúng ta nhấn nút Create Client

Chờ một chút thôi, bạn sẽ thấy thông tin tiếp tục hiện ta trên trang hiện tại:

Bây giờ chúng ta có thêm Client ID và Client Secret, đây là hai thông tin cần thiết để chúng ta tiếp tục thiết lập cho Single Sign On Client tại https://en.vngeek.com.
Bạn đừng quên nhấn nút Update Client nhé.

Bây giờ bạn quay lại với Single Sign On Configuration trên Client. Điền thông tin chúng ta vừa có vào các ô còn lại.

Ở ô  OAuth Server URL bạn điền địa chỉ Plugin OAuth Server được cài đặt, trong trường hợp này là https://vngeek.com

Đừng quên nhắn Save Changes.

Tới đây là coi như chúng ta đã thiết lập xong rồi. Chỉ cần kiểm tra lại một chút thôi.

Mình đăng xuất khỏi trang https://en.vngeek.com. Và vào trang đăng nhập tại địa chỉ: https://en.vngeek.com/wp-login.php

Đã có chữ Single Sign On to đùng hiện ta. Giờ đây mỗi khi nhấn vào nút này, bạn sẽ được chuyển hướng đến trang đăng nhập chính tại địa chỉ https://vngeek.com. Nếu đã đăng nhập ở https://vngeek.com, bạn sẽ được tự động đăng nhập tại trang https://en.vngeek.com.

Chú ý: 
https://en.vngeek.com/?auth=sso chính là đường dẫn SSO. Bạn có thể tạo một nút bất kỳ hoặc Menu và dẫn đến địa chỉ này, tức là thực hiện cách đăng nhập Single Sign On rồi đó.

Ghi chú: Trong một số trường hợp bị lỗi như hình dưới:

Lỗi Single Sign On do khá nhiều nguyên nhân.

Tuy nhiên đối với phương thức xác thực Authorization Code đôi khi bạn sẽ gặp lỗi trên khá nhiều. Cách sửa lỗi này thì các bạn chú ý phần Client Credential Assigned User trong Advanced Options bạn chỉ định cho một thành viên nào đó trong danh sách người dùng đã đăng ký là được.

Đừng quên vào OAuth Server — > Settings chọn giống như hình bên dưới:

Chúc các bạn thành công!

Bình luận