Problèmes de script intersite
Vous ne pouvez pas transférer les cookies d'authentification WP entre les domaines. Vous ne voulez pas non plus stocker de mots de passe en texte brut pour vous connecter par programme à une autre installation WP. Ainsi, vous devrez demander aux utilisateurs de se connecter à WordPress, puis d'accéder à leur état de connexion via un point de terminaison API à partir du site tiers. Cela permet à WordPress de gérer toute l'authentification. Il est assez sécurisé car un utilisateur devra se connecter physiquement du côté WP pour que le point de terminaison API serve les données au tiers.
Créer un point de terminaison API
Consultez cet article que je viens d'écrire ici: http://coderrr.com/create-an-api-endpoint-in-wordpress/
Vous pouvez également voir la démonstration du code ici: https://gist.github.com/2982319
Vous devrez trouver la logique pour les besoins de votre propre application, mais cela vous permettra de créer un point de terminaison où vous pourrez servir tout ce que vous voulez du côté de WordPress.
Puisque vous utilisez WordPress comme site d'authentification, vous pouvez utiliser une vérification comme is_user_logged_in (). S'ils sont connectés, renvoyez un objet utilisateur au tiers avec toutes les informations dont ils ont besoin.
Connexion à partir du tiers
À partir du tiers, ils peuvent créer un lien vers votre page de connexion pour une expérience transparente en utilisant la variable de requête redirect_to. Une fois connecté, il les retransmettra sur le site tiers.
http://sub.yourdomain.com/wp-login.php?redirect_to=http%3A%2F%2Fwww.third-party-domain.com
Connexions à distance
Si vous devez connecter des utilisateurs à WordPress à partir d'un site tiers, vous pouvez utiliser certaines fonctions WP simples répertoriées sur ce site: http://kuttler.eu/code/log-in-a-wordpress-user-programmatically/
Vous aurez certainement besoin d'utiliser un secret partagé et de créer des hachages basés sur le temps pour garder les choses en sécurité. En gros, voici à quoi cela ressemblerait:
Un tiers envoie une demande avec un horodatage et un jeton généré par un secret partagé:
$shared_secret = 'foobar'; //do not send this to the API endpoint
$timestamp = time();
$token = md5($shared_secret.$time_stamp);
L'installation WordPress reçoit la demande:
$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!