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!
api
authentication
customization
single-sign-on
emersonthis
quelle
quelle
Antworten:
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.
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:
Die WordPress-Installation erhält die Anfrage:
quelle
counter
anstatt zu verwendentime()
und es mit der Anfrage zu übergeben. Beide Seiten lassen den letzten Zähler bestehen, und wenn die API eine Anfrage mit einem neuen Zähler erhält, wird überprüft, ob der neue Zähler größer als der letzte ist. Auf diese Weise kann eine Verzögerung keinen Schaden anrichten.