it-swarm.com.de

Erstellen Sie eine API für Single Sign-On mit der Site eines Drittanbieters

Meine Website muss in eine Software von Drittanbietern integriert werden, die in einer eigenen Subdomain des Softwareunternehmens betrieben wird. Ich muss den Entwicklern von Drittanbietern einen Endpunkt bereitstellen, mit dem sie API-Aufrufe (an meine WordPress-Site) vornehmen können, damit die Benutzer meiner Site auf die Unterdomäne zugreifen können.

Die andere Site muss Benutzer von meiner Site über eine API authentifizieren.

Ich bin nicht sicher, wo ich anfangen soll, aber ich habe das Gefühl, dass dies von Leuten herausgefunden wurde, die schlauer sind als ich. Danke im Voraus!

12
emersonthis

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 deren Anmeldestatus zugreifen. Auf diese Weise kann WordPress die gesamte Authentifizierung durchführen. Dies ist ziemlich sicher, da sich ein Benutzer physisch auf der Seite WP 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 zurückgegeben.

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-programmatisch/

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!
16
Brian Fegter