Xin chào các bạn, các bạn sử dụng WordPress để làm Website hoặc trang chủ CSM và dùng nhiều site WordPress (chẳng hạn như trang tin tức, bán hàng, blog v,…) hẳn cũng đã từng thử qua Multisite trong WordPress.
Mục đích sử dụng Multisite các bạn cũng đã biết, lợi thế là không cần tốn thêm dung lượng của mã nguồn, thiết lập thêm một site mới với cơ sở dữ liệu mới. Mà đơn giản thêm site từ trang chính. Thêm bao nhiêu site cũng được chỉ đơn giản bằng nhấp chuột.
Lợi thế tiếp theo đó là đồng bộ được cơ sở dữ liệu cho User. Chỉ cần đăng ký thành viên trên trang chủ, người dùng sẽ đăng nhập được trên tất cả site khác cùng nằm trong hệ thống Multisite đã thiết đặt trước đó mà không cần phải đồng bộ cơ sở dữ liệu hoặc sử dụng thêm dịch vụ bên ngoài như Auth0, OpenID, hoặc sử dụng Social Login bằng mạng xã hội như Google, Facebook hay Twitter v,v… Nhưng đó là khi các bạn thiết lập Multisite. Còn giả sử như bạn có 2 site không nằm trong hệ thống Multisite, và bạn không muốn sử dụng dịch vụ của bất kỳ bên thứ 3 nào thì có cách nào hay không?
Dĩ nhiên là có, và cũng miễn phí nữa.
Các bạn có thể sử dụng Plugin WP OAuth Server – CE, giúp bạn Single Sign On WordPress với giao thức chứng thực OAuth2. Giúp người dùng đăng nhập trên nhiều site trên cùng hệ thống bằng việc chia sẻ giữa Oauth Server và Client một cách an toàn và người dùng không cần cung cấp username và mật khẩu của mình lại nhiều lần.
Đơn giản bạn có thể thấy bạn có một tài khoản Google (gmail) và bạn có để ý để vào Youtube hay các dịch vụ của Google các bạn được chuyển hướng đến https://accounts.google.com sau khi điền tên người dùng và mật khẩu, các bạn lại được chuyển hướng đến trang ban đầu các bạn truy cập. Tương tự như vậy một số trang Web cũng tận dụng để người dùng sử dụng chính tài khoản Google hoặc Facebook để đăng nhập, vừa tiện lợi vừa nhanh chóng cũng như tính bảo mật mà nó mang lại.
Dưới đây là sơ đồ minh họa cách thức hoạt động của phương thức xác thực OAuth2:
Trong ví dụ thực tế này, các bạn có thể thấy trang chủ VnGeek.com sẽ là OAuth2 Server và trang VnGeek Tube (ở địa chỉ https://vngeek.com/videos) sẽ là Client.
May mắn là với Plugint WP-OAuth2 Server CE này, tác giả cũng cho chúng ta cả Plugin của Client.
Đề phòng trường hợp sau này Plugin không còn được phát triển ở phần Client nên mình để 2 link ở dưới để các bạn có thể download sau này:
Hoặc địa chỉ này: WP-OAuth Server CE + Client
Các bạn giải nén ra và cài đặt WP-OAuth Server CE trên site chính. Và Single Sign On trên site phụ nhé.
Như trong trường hợp của mình. Site https://vngeek.com mình cài đặt WP-OAuth Server CE còn site https://vngeek.com/videos mình cài Single Sign On plugin.
Tiếp tục vào phần thiết đặt lần lượt trên Server và Client.
Ở phần Server với phiên bản miễn phí chúng ta chỉ có thể dùng Grant Types là Authorization Code.
Các bạn bật lên nhé.
Tiếp tục kéo xuống phần Misc Settings:
Các bạn đừng quên bật kích hoạt OAuth Server ở tab General Settings nhé.
Tiếp theo chúng ta tiếp tục thiết đặt ở Client trong menu OAuth Server.
Bây giờ các bạn đến phần cài đặt trên site Client, ở trường hợp mình là trang https://vngeek.com/videos và đến phần thiết lập của Single Sign On:
Ở đây các bạn sẽ có được đường Link Redirect URI. Chép đường dẫn này và dán vào mục Redirect URI trong phần Setting của OAuth Server.
Sau khi tạo Client, các bạn lấy các chuỗi mã ở Client ID và Client Secret dán vào các mục tương ứng trong phần Setting ở site Client.
Đừng quên lưu lại thiết lập nhé.
Sau khi lưu lại các thiết lập. Bây giờ coi như đã xong rồi đó. Các bạn chỉ cần thiết lập Nút bấm để Single Sign On trang phụ (VnGeek Tube – vngeek.com/videos) với trang chính (vngeek.com). Chỉ cần đưa người dùng đến địa chỉ:
https://vngeek.com/videos/?auth=sso
Thì khi đó Plugin của chúng ta sẽ điều hướng người dùng đến trang đăng nhập ở trang chính. Và sau khi được xác thực thành công (người dùng thực hiện đăng nhập trên trang chính, hoặc đã đăng nhập trước đó, Plugin sẽ đưa người dùng quay trở lại site phụ – ở trường hợp của mình là VnGeek Tube, và thế là họ đã đăng nhập vào site phụ rồi đó).
Để thiết lập hoàn toàn việc Single Sign On trên site phụ, các bạn hãy tắt tính năng cho phép thành viên mới đăng ký trong General Settings trên site phụ nhé.
Sau đó tạo một Nút bấm trên site phụ với tên là Login chẳng hạn với đường dẫn là Redirect URI.
Chúc các bạn thành công.