Проблемы межсайтового скриптинга
Вы не можете передавать файлы cookie WP auth между доменами. Вы также не хотите хранить незашифрованные пароли для программного входа в другую установку WP. Таким образом, вам нужно будет, чтобы пользователи входили в WordPress, а затем получали доступ к своему состоянию входа через конечную точку API со стороннего сайта. Это позволяет WordPress обрабатывать все аутентификации. Это довольно безопасно, так как пользователь должен будет физически войти в систему на стороне WP, чтобы конечная точка API передавала данные сторонним лицам.
Создать конечную точку API
Проверьте эту статью, которую я только что написал здесь: http://coderrr.com/create-an-api-endpoint-in-wordpress/
Также вы можете увидеть демонстрацию кода здесь: https://gist.github.com/2982319
Вам придется выяснить логику для собственных нужд приложения, но это позволит вам создать конечную точку, где вы сможете обслуживать все, что захотите, со стороны WordPress.
Поскольку вы используете WordPress в качестве сайта аутентификации, вы можете использовать проверку как is_user_logged_in (). Если они вошли в систему, верните объект пользователя третьей стороне с любой необходимой ему информацией.
Вход в систему от третьих лиц
Сторонние разработчики могут ссылаться на вашу страницу входа для беспроблемного использования запроса redirect_to var. После входа он передает их на сторонний сайт.
http://sub.yourdomain.com/wp-login.php?redirect_to=http%3A%2F%2Fwww.third-party-domain.com
Удаленные логины
Если вам необходимо войти в WordPress со стороннего сайта, вы можете использовать некоторые простые функции WP, перечисленные на этом сайте: http://kuttler.eu/code/log-in-a-wordpress-user-programmatics/
Вам определенно нужно будет использовать общий секрет и создавать временные хеши для этого секрета, чтобы обеспечить безопасность. По сути, вот как это будет выглядеть:
Третья сторона отправляет запрос с отметкой времени и токеном, сгенерированным общим секретом:
$shared_secret = 'foobar'; //do not send this to the API endpoint
$timestamp = time();
$token = md5($shared_secret.$time_stamp);
Установка WordPress получает запрос:
$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!