JWT-Authentifizierung mit WP-Ansatz

8

Wir verwenden JWT ( JSON Web Token ) zur Authentifizierung unserer WordPress-Anwendung bei einem externen Dienst. Der aktuelle Fluss, an den wir denken, ist wie folgt:

  1. Der Benutzer meldet sich auf der übergeordneten Site an
  2. Die übergeordnete Site sendet eine POST-Anfrage mit den Benutzerinformationen und dem JWT-Token an die WordPress-Site
  3. Die WP-Site speichert das JWT-Token
  4. Das Token wird jedes Mal, wenn der Benutzer eine neue Seite besucht, auf Ablauf überprüft. Wenn das Token abgelaufen ist, wird der Benutzer zur erneuten Anmeldung zur übergeordneten Site umgeleitet.

Meine Fragen:

  1. Ist das der richtige Ansatz?
  2. Wie speichere ich das JWT-Token? Ein Keks? Oder in der Datenbank mit den Benutzerinformationen als eindeutiger Kennung? Hinweis: Die Benutzer werden nicht auf der WP-Site registriert.
  3. Wie überprüfe ich den Ablauf?

Es gibt ein WP-Plugin für JWT, aber keine Dokumentation dafür, daher bin ich mir nicht sicher, ob es meinen Zweck erfüllen wird.

Rutwick Gangurde
quelle
hmmm wtf ist jwt?
Mark Kaplun
Relevante Links hinzugefügt. Prüfen.
Rutwick Gangurde
Ok, jetzt weiß ich, was JWT ist. Ich verstehe die Frage immer noch nicht und warum ist sie spezifisch für WordPress. Gibt es dafür keinen Best-Practice-Leitfaden? Wie auch immer, Plugin / Bibliotheksempfehlungen sind nicht zum Thema ...
Mark Kaplun
1
Ich möchte keine Plugin-Empfehlung, ich schreibe meinen eigenen Code. Die letzte Zeile, die Sie dazu veranlasst hat, wurde entfernt.
Rutwick Gangurde

Antworten:

8

Dies zeigte sich als Benachrichtigung aufgrund der positiven Abstimmung. So habe ich es gelöst.

  1. Der in der App codierte Endpunkt, mit dem ich mich authentifizieren soll, bereitet das Token vor.
  2. Das Token muss im angegebenen Format vorliegen.
  3. Es sollte dann Base 64-codiert und Hash-verschlüsselt sein.
  4. Der wp_initHandler sollte verwendet werden, um die vom Endpunkt gesendete POST-Anforderung zu verarbeiten und das Token zu extrahieren.
  5. Der Schlüssel wird auf eine andere Weise freigegeben, die zur Entschlüsselung verwendet wird.
  6. Vergleichen Sie das extrahierte Token mit einem lokal generierten Token mit denselben Informationen.
  7. Speichern Sie es in einem Cookie und überprüfen Sie es bei jedem Seitenzugriff. Sie können es nach einer Weile ablaufen lassen oder die Zeitscheibe bei jedem Seitenzugriff weiter erhöhen.

Der Endpunkt kann in einer beliebigen Sprache sein. Auch dies ist der allgemeine Ablauf, Sie können es verwenden, wo immer Sie wollen.

Rutwick Gangurde
quelle
0

Das Aktivieren von Single-Sign-On in WordPress hat mehr als 18 Stunden gedauert, aber möglicherweise nur wenige Minuten:

Grundsätzlich sollten Sie https://wordpress.org/plugins/wp-force-login/ und eine modifizierte Version von https://as.wordpress.org/plugins/jwt-authenticator/ verwenden und dann eine Authentifizierung erstellen -geschützter Endpunkt auf Ihrer Hauptwebsite, der ein JWT (JSON Web Token) generiert und zur speziellen URL Ihrer WordPress-Site zurückleitet.

Den vollständigen Code finden Sie hier .

Ryan
quelle