Deutsch
  • oidc
  • wordpress

Integration mit WordPress für die Autorisierung

Der zweite Teil der Serie über die Integration von Logto mit WordPress, mit Schwerpunkt auf Autorisierung.

Sijie
Sijie
Developer

In dem vorherigen Artikel haben wir besprochen, wie Logto für die Authentifizierung in WordPress integriert werden kann. Dieser Artikel, als Teil zwei, wird sich auf den Autorisierungsprozess konzentrieren, wobei der Fokus auf dem Rollensystem in WordPress liegt und wie die Rollenzuweisung mit Logto implementiert werden kann, da das Plugin, das wir im vorherigen Artikel verwendet haben, keine Autorisierungsfunktionen direkt zur Verfügung stellt.

Wir erstellen eine Rollenzuweisungsfunktion, die automatisch WordPress-Rollen zu Benutzern auf Basis ihrer von Logto RBAC (Role-Based Access Control) zur Verfügung gestellten Rollen zuweist.

Verständnis von WordPress Benutzerrollen

WordPress hat ein eingebautes Benutzerrollenverwaltungssystem, das definiert, welche Aktionen (Fähigkeiten) ein Benutzer auf einer Website durchführen kann. Die Standardbenutzerrollen umfassen Administrator, Editor, Autor, Mitwirkender und Abonnent, jeder mit seinem eigenen Set von Fähigkeiten.

Diese Rollen sind entscheidend für die Aufrechterhaltung der Sicherheit und Wirksamkeit der Betriebsabläufe der Website, da sie sicherstellen, dass die Benutzer Zugriffsstufen haben, die auf ihren Verantwortlichkeiten basieren.

Die Lösung: individuelle Rollenzuordnung

Logto verwendet Role-Based Access Control (RBAC) als Autorisierungsmodell und nutzt "Scopes" als kleinste Einheit der Erlaubnis. Diese Scopes definieren die spezifischen Aktionen, die ein authentifizierter Benutzer innerhalb einer Anwendung ausführen darf. WordPress hingegen arbeitet mit einem anderen Prinzip bei der Verwaltung von Benutzerberechtigungen und verwendet vorgefertigte "Rollen", die verschiedene Fähigkeiten bündeln.

Angesichts dieses grundlegenden Unterschieds empfehlen wir, spezielle Rollen innerhalb von Logto zu erstellen, die den in WordPress definierten Rollen entsprechen. Diese Rollen haben möglicherweise keine Scopes, sie werden nur als Referenz für die Zuordnung von Benutzern zu WordPress-Rollen verwendet.

Voraussetzungen

Bevor Sie beginnen, stellen Sie sicher, dass Sie über Folgendes verfügen:

  • Abschluss des vorherigen Artikels zur Integration von Logto mit WordPress zur Authentifizierung, dies umfasst:
    • Eine WordPress-Site mit Administratorzugriff.
    • Ein Logto-Konto mit einer für Ihre WordPress-Site eingerichteten Anwendung.
    • Das OpenID Connect Generic-Plugin ist auf Ihrer WordPress-Site installiert und konfiguriert.
  • Einrichtung von Rollen in Logto, die den Rollen in WordPress entsprechen. Beispielsweise, wenn Sie eine 'Editor'-Rolle in Wordpress haben, erstellen Sie eine 'group:editors'-Rolle in Logto.

Implementierung der Rollenkarte mit eigenem Code

Um die Rollenzuordnung zu implementieren, werden wir benutzerdefinierten Code zur functions.php Datei des WordPress-Themas hinzufügen. Dies umfasst die Verwendung des wp_login-Aktionshakens, der ausgelöst wird, wenn ein Benutzer sich einloggt. Hier finden Sie eine Schritt-für-Schritt-Anleitung zur Einrichtung:

Schritt 1: Greifen Sie auf die functions.php Ihres Themas zu

Öffnen Sie die functions.php Datei Ihres Themas. Sie können auf diese Datei über das WordPress-Admin-Panel zugreifen, indem Sie zu Aussehen > Theme-Editor navigieren und functions.php aus der rechten Seiten-Dateiliste auswählen. Oder im Quellcode navigieren Sie zu Ihrem WordPress-Theme-Verzeichnis und suchen die functions.php Datei. Mit dieser Datei können Sie benutzerdefinierte PHP-Funktionen hinzufügen, die die Funktionalität Ihrer WordPress-Site erweitern.

Schritt 2: Schreiben Sie die Rollenzuordnungsfunktion

Nachfolgend ist ein einfaches Beispiel für eine Funktion, die Sie zu functions.php hinzufügen könnten. Diese Funktion wird beim Einloggen des Benutzers ausgelöst und weist Rollen zu, basierend auf der Benutzerrolle claims, die von Logto abgerufen wurden.

Schritt 3: Verstehen Sie den Code und passen Sie ihn an

  • logto_handler Funktion: Diese Funktion nimmt zwei Parameter: $user_login (Benutzername) und $user (Benutzerobjekt). Sie holt Rollen von Logto, die als openid-connect-generic-last-user-claim in Benutzer-Meta gespeichert sind, ordnet diese Rolle einer entsprechenden WordPress-Rolle zu und weist sie dem Benutzer zu.

  • add_action: Hängt die logto_handler Funktion an die wp_login Aktion an, die ausgelöst wird, nachdem ein Benutzer sich eingeloggt hat. Die 10 ist die Priorität (Standard), und 2 zeigt die Anzahl der von der Funktion akzeptierten Argumente an.

Das obige Beispiel weist die Rolle 'Editor' Benutzern zu, die über Logto mit dem Rollennamen group:editors authentifiziert sind. In einer realen Umgebung müssten Sie jedoch wahrscheinlich mehr Arten von Rollenzuordnungen implementieren.

Eine Liste von WordPress-Rollen und ihren Fähigkeiten finden Sie hier.

Schritt 4: Testen Sie Ihre Einrichtung

Lassen Sie uns nun die Rollenzuordnungsfunktion testen, indem wir uns mit einem Benutzer einloggen, der in Logto die Rolle group:editors hat. Überprüfen Sie nach dem Einloggen die Rolle des Benutzers in WordPress, um sicherzustellen, dass die Zuordnung korrekt funktioniert.

Fazit

Durch die Integration von Logto mit WordPress für Authentifizierung und Autorisierung können Sie die Sicherheit und Funktionalität Ihrer Seite verbessern. Denken Sie daran, dass der hier bereitgestellte Code ein einfaches Beispiel ist und Sie ihn möglicherweise an die Rollen- und Berechtigungsstruktur Ihrer WordPress-Site anpassen müssen.