Problemi di scripting tra siti
Non è possibile trasferire cookie di autenticazione WP tra domini. Inoltre, non si desidera memorizzare password in chiaro per accedere a un'altra installazione di WP a livello di codice. Pertanto, dovrai far accedere gli utenti a WordPress e quindi accedere al loro stato di accesso tramite un endpoint API dal sito di terze parti. Ciò consente a WordPress di gestire tutta l'autenticazione. È abbastanza sicuro in quanto un utente dovrà accedere fisicamente al lato WP affinché l'endpoint API fornisca i dati a terzi.
Creare un endpoint API
Dai un'occhiata a questo articolo che ho appena scritto qui: http://coderrr.com/create-an-api-endpoint-in-wordpress/
Inoltre, puoi vedere la dimostrazione del codice qui: https://gist.github.com/2982319
Dovrai capire la logica per le tue esigenze di app, ma questo ti permetterà di creare un endpoint in cui puoi servire tutto ciò che vuoi dal lato WordPress.
Dato che stai usando WordPress come sito di autenticazione, puoi usare un segno di spunta come is_user_logged_in (). Se sono connessi, restituisci un oggetto utente a terzi con tutte le informazioni di cui hanno bisogno.
Accesso da parte di terzi
Di terze parti, possono collegarsi alla tua pagina di accesso per un'esperienza senza soluzione di continuità utilizzando la redirect_per query var. Una volta effettuato l'accesso, li riporterà al sito di terze parti.
http://sub.yourdomain.com/wp-login.php?redirect_to=http%3A%2F%2Fwww.third-party-domain.com
Login remoti
Se devi accedere agli utenti di WordPress da un sito di terze parti, puoi utilizzare alcune semplici funzioni WP elencate in questo sito: http://kuttler.eu/code/log-in-a-wordpress-user-programmatical/
Avrai sicuramente bisogno di usare un segreto condiviso e creare hash basati sul tempo da quel segreto per mantenere le cose sicure. Fondamentalmente, ecco come sarebbe:
Le terze parti inviano una richiesta con un timestamp e un token generati da un segreto condiviso:
$shared_secret = 'foobar'; //do not send this to the API endpoint
$timestamp = time();
$token = md5($shared_secret.$time_stamp);
L'installazione di WordPress riceve la richiesta:
$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!