Các vấn đề về kịch bản chéo trang
Bạn không thể chuyển cookie WP auth giữa các tên miền. Bạn cũng không muốn lưu trữ mật khẩu văn bản gốc để đăng nhập vào một bản cài đặt WP khác theo chương trình. Vì vậy, bạn sẽ phải yêu cầu người dùng đăng nhập vào WordPress và sau đó truy cập trạng thái đăng nhập của họ thông qua điểm cuối API từ trang web của bên thứ ba. Điều này cho phép WordPress xử lý tất cả các xác thực. Nó khá an toàn vì người dùng sẽ phải đăng nhập vật lý vào phía WP để điểm cuối API cung cấp dữ liệu cho bên thứ ba.
Tạo Điểm cuối API
Kiểm tra bài viết này tôi vừa viết ở đây: http://coderrr.com/create-an-api-endpoint-in-wordpress/
Ngoài ra, bạn có thể xem trình diễn mã ở đây: https://gist.github.com/2982319
Bạn sẽ phải tìm ra logic cho nhu cầu ứng dụng của riêng bạn, nhưng điều này sẽ cho phép bạn tạo một điểm cuối nơi bạn có thể phục vụ mọi thứ bạn muốn từ phía WordPress.
Vì bạn đang sử dụng WordPress làm trang web xác thực, bạn có thể sử dụng một kiểm tra như is_user_logged_in (). Nếu họ đã đăng nhập, hãy trả lại một đối tượng người dùng cho bên thứ ba với bất kỳ thông tin nào họ cần.
Đăng nhập từ bên thứ ba
Từ bên thứ ba, họ có thể liên kết đến trang đăng nhập của bạn để có trải nghiệm liền mạch bằng cách sử dụng var_to query var. Sau khi đăng nhập, nó sẽ chuyển chúng trở lại trang web của bên thứ ba.
http://sub.yourdomain.com/wp-login.php?redirect_to=http%3A%2F%2Fwww.third-party-domain.com
Đăng nhập từ xa
Nếu bạn cần đăng nhập người dùng vào WordPress từ trang web của bên thứ ba, bạn có thể sử dụng một số chức năng WP đơn giản được liệt kê trên trang web này: http://kuttler.eu/code/log-in-a-wordpress-user-programmatically/
Bạn chắc chắn sẽ cần phải sử dụng một bí mật được chia sẻ và tạo ra các băm dựa trên thời gian để giữ bí mật. Về cơ bản, đây là những gì nó sẽ trông như thế nào:
Bên thứ ba gửi yêu cầu với dấu thời gian và mã thông báo được tạo bởi một bí mật được chia sẻ:
$shared_secret = 'foobar'; //do not send this to the API endpoint
$timestamp = time();
$token = md5($shared_secret.$time_stamp);
Cài đặt WordPress nhận được yêu cầu:
$shared_secret = 'foobar';
$timestamp = esc_attr($_GET['timestamp']);
if((time() - $timestamp) > 30) # Threshold is 30 seconds
//do something here - TOKEN expired!
$token = md5($share_secret.$timestamp);
$token_to_check = esc_attr($_GET);
if($token == $token_to_check)
//authenticated!