Siteübergreifende Skriptprobleme
Sie können keine WP-Authentifizierungs-Cookies zwischen Domains übertragen. Sie möchten auch keine Klartextkennwörter speichern, um sich programmgesteuert bei einer anderen WP-Installation anzumelden. Daher müssen sich Benutzer bei WordPress anmelden und dann über einen API-Endpunkt von der Website eines Drittanbieters auf ihren Anmeldestatus zugreifen. Auf diese Weise kann WordPress die gesamte Authentifizierung durchführen. Dies ist ziemlich sicher, da sich ein Benutzer physisch auf der WP-Seite anmelden muss, damit der API-Endpunkt die Daten für den Drittanbieter bereitstellt.
Erstellen Sie einen API-Endpunkt
Lesen Sie den Artikel, den ich gerade hier geschrieben habe: http://coderrr.com/create-an-api-endpoint-in-wordpress/
Sie können die Code-Demonstration auch hier sehen: https://gist.github.com/2982319
Sie müssen die Logik für Ihre eigenen App-Anforderungen herausfinden, aber dies ermöglicht es Ihnen, einen Endpunkt zu erstellen, auf dem Sie alles bereitstellen können, was Sie von der WordPress-Seite wollen.
Da Sie WordPress als Authentifizierungssite verwenden, können Sie eine Prüfung wie is_user_logged_in () verwenden. Wenn sie angemeldet sind, geben Sie ein Benutzerobjekt mit den erforderlichen Informationen an den Dritten zurück.
Anmelden von einem Drittanbieter
Über die Abfragevariable "redirect_to" können sie von Drittanbietern eine Verknüpfung zu Ihrer Anmeldeseite herstellen, um eine nahtlose Darstellung zu erhalten. Sobald Sie angemeldet sind, werden sie an die Website eines Drittanbieters weitergeleitet.
http://sub.yourdomain.com/wp-login.php?redirect_to=http%3A%2F%2Fwww.third-party-domain.com
Remoteanmeldungen
Wenn Sie Benutzer von einer Website eines Drittanbieters bei WordPress anmelden müssen, können Sie einige einfache WP-Funktionen verwenden, die auf dieser Website aufgeführt sind: http://kuttler.eu/code/log-in-a-wordpress-user-programmatically/
Sie müssen auf jeden Fall ein gemeinsames Geheimnis verwenden und zeitbasierte Hashes aus diesem Geheimnis erstellen, um die Sicherheit zu gewährleisten. Grundsätzlich sieht es so aus:
Ein Dritter sendet eine Anfrage mit einem Zeitstempel und einem Token, die von einem gemeinsamen Geheimnis generiert wurden:
$shared_secret = 'foobar'; //do not send this to the API endpoint
$timestamp = time();
$token = md5($shared_secret.$time_stamp);
Die WordPress-Installation erhält die Anfrage:
$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!