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.
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.
Bạn đừng quên sau khi thiết lập thì đánh tick chọn
OAuth Server Enabled ở Tab General Settings nhé.
Ở 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.
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.
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ờ 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.
Đừ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
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:
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!