Authentifizierung zu deiner WordPress-Anwendung hinzufügen
Dieses Tutorial zeigt dir, wie du Logto in deine WordPress Website integrierst.
Voraussetzungen
- Ein Logto Cloud Konto oder ein selbst gehostetes Logto.
- Eine Logto-Traditionelle-Anwendung erstellt.
- Ein WordPress-Projekt: Folge dem offiziellen WordPress-Installationsleitfaden, um deine WordPress-Website einzurichten, bevor du fortfährst.
Integration
Plugin installieren
Wir werden das OpenID Connect Generic Plugin verwenden, um Logto über das OIDC-Protokoll in deine WordPress-Website zu integrieren.
- Melde dich bei deiner WordPress-Seite an.
- Navigiere zu "Plugins" und klicke auf "Neu hinzufügen".
- Suche nach "OpenID Connect Generic" und installiere das Plugin von daggerhart.
- Aktiviere das Plugin.
Redirect-URI konfigurieren
Zuerst konfigurieren wir die Redirect-URI. Du findest sie in den Plugin-Einstellungen, scrolle nach unten zum Abschnitt "Notizen" und kopiere den Wert der "Redirect-URI".
Wechsle zur Anwendungsdetailseite der Logto-Konsole. Füge eine Redirect-URI hinzu und klicke auf "Änderungen speichern".
Plugin einrichten
Beziehe dich auf die folgende Tabelle für die notwendigen Konfigurationsdetails:
Plugin-Feld | Beschreibung |
---|---|
Client ID | Die App-ID deiner Logto-Anwendung |
Client Secret | Das App-Geheimnis deiner Logto-Anwendung |
OpenID Scope | Gib email profile openid offline_access ein |
Login Endpoint URL | Die Autorisierungsendpunkt-URL deiner Logto-Anwendung, die https://[tenant-id].logto.app/oidc/auth ist. Du kannst auf der Logto-Anwendungsseite auf "Endpunktdetails anzeigen" klicken, um die URL zu erhalten. |
Userinfo Endpoint URL | Die Userinfo-Endpunkt-URL deiner Logto-Anwendung, die https://[tenant-id].logto.app/oidc/me ist. |
Token Validation Endpoint URL | Die Token-Validierungsendpunkt-URL deiner Logto-Anwendung, die https://[tenant-id].logto.app/oidc/token ist. |
End Session Endpoint URL | Die End-Session-Endpunkt-URL deiner Logto-Anwendung, die https://[tenant-id].logto.app/oidc/session/end ist. |
Identity Key | Der eindeutige Schlüssel im ID-Token, der die Identität des Benutzers enthält. Es kann sich um E-Mail oder Sub handeln, abhängig von deiner Konfiguration. |
Nickname Key | Der Schlüssel im ID-Token, der den Spitznamen des Benutzers enthält. Du kannst ihn auf Sub setzen und später ändern. |
Checkpoint: Teste deine Anwendung
Jetzt kannst du deine Anwendung testen:
- Melde dich von deiner WordPress-Seite ab.
- Besuche die WordPress-Anmeldeseite und klicke auf die Schaltfläche "Mit Logto anmelden".
- Du wirst zur Logto-Anmeldeseite weitergeleitet.
- Melde dich mit deinem Logto-Konto an.
- Du wirst zurück zur WordPress-Seite geleitet und automatisch angemeldet.
Rollen-Mapping
WordPress verfügt über ein integriertes Benutzerrollen-Managementsystem, das definiert, welche Aktionen (Fähigkeiten) ein Benutzer auf einer Seite ausführen kann. Die Standardbenutzerrollen umfassen Administrator, Editor, Autor, Mitwirkender und Abonnent, jede mit ihrem eigenen Satz von Fähigkeiten.
Logto verwendet die rollenbasierte Zugangskontrolle (RBAC) als Autorisierungsmodell und nutzt "Berechtigungen" als kleinste Einheit der Berechtigung. Diese Berechtigungen definieren die spezifischen Aktionen, die ein authentifizierter Benutzer innerhalb einer Anwendung ausführen darf. WordPress hingegen arbeitet nach einem anderen Prinzip zur Verwaltung von Benutzerberechtigungen und verlässt sich auf vordefinierte "Rollen", die verschiedene Fähigkeiten bündeln.
Angesichts dieses grundlegenden Unterschieds schlagen wir vor, spezielle Rollen innerhalb von Logto zu erstellen, die den in WordPress definierten Rollen entsprechen. Diese Rollen müssen keine Berechtigungen haben, sie dienen nur als Referenz für die Zuordnung von Benutzern zu WordPress-Rollen.
Voraussetzungen
- Richte Rollen in Logto ein, die den Rollen in WordPress entsprechen. Wenn du beispielsweise eine 'editor'-Rolle in WordPress hast, erstelle eine 'group:editors'-Rolle in Logto.
Rollen-Mapping implementieren
Um das Rollen-Mapping zu implementieren, fügen wir benutzerdefinierten Code zur functions.php
-Datei des WordPress-Themes hinzu. Dies beinhaltet die Verwendung des wp_login
-Aktionshooks, der ausgelöst wird, wenn sich ein Benutzer anmeldet. Hier ist eine Schritt-für-Schritt-Anleitung, wie du dies einrichtest:
Schritt 1: Zugriff auf die functions.php deines Themes
Öffne die functions.php
-Datei deines Themes. Du kannst auf diese Datei über das WordPress-Admin-Panel zugreifen, indem du zu Darstellung > Theme-Editor navigierst und functions.php
aus der Dateiliste auf der rechten Seite auswählst. Oder im Quellcode navigiere zu deinem WordPress-Theme-Verzeichnis und finde die functions.php
-Datei. Diese Datei ermöglicht es dir, benutzerdefinierte PHP-Funktionen hinzuzufügen, die die Funktionalität deiner WordPress-Seite erweitern.
Schritt 2: Die Rollen-Mapping-Funktion schreiben
Unten ist ein einfaches Beispiel für eine Funktion, die du zur functions.php hinzufügen könntest. Diese Funktion wird bei der Benutzeranmeldung ausgelöst und weist Rollen basierend auf dem roles
-Anspruch des Benutzers zu, der von Logto abgerufen wird.
function logto_handler($user_login, $user = null) {
if (!$user) {
$user = get_user_by('login', $user_login);
}
$oidc_claims = get_user_meta($user->ID, 'openid-connect-generic-last-user-claim', true);
if (in_array('group:editors', $oidc_claims['roles'])) {
$user->set_role('editor');
} else {
$user->set_role('subscriber');
}
}
add_action('wp_login', 'logto_handler', 10, 2);
Schritt 3: Den Code verstehen und anpassen
-
logto_handler
Funktion: Diese Funktion nimmt zwei Parameter:$user_login
(Benutzername) und$user
(Benutzerobjekt). Sie ruft Rollen von Logto ab, die alsopenid-connect-generic-last-user-claim
in den Benutzermetadaten gespeichert sind, ordnet diese Rolle einer entsprechenden WordPress-Rolle zu und weist sie dem Benutzer zu. -
add_action
: Diese Zeile verbindet dielogto_handler
Funktion mit derwp_login
Aktion, die nach der Benutzeranmeldung ausgelöst wird. Die10
ist die Priorität (Standard), und2
gibt die Anzahl der Argumente an, die die Funktion akzeptiert.
Das obige Beispiel weist die 'editor'-Rolle Benutzern zu, die über Logto mit der Rollenbezeichnung group:editors
authentifiziert wurden. In einem realen Szenario wirst du jedoch wahrscheinlich mehr Arten von Rollen-Mappings implementieren müssen.
Du kannst die Liste der WordPress-Rollen und deren Fähigkeiten hier finden.
Schritt 4: Deine Einrichtung testen
Jetzt lass uns die Rollen-Mapping-Funktion testen, indem wir uns mit einem Benutzer anmelden, der die group:editors
Rolle in Logto hat. Nach der Anmeldung überprüfe die Rolle des Benutzers in WordPress, um sicherzustellen, dass das Mapping korrekt funktioniert.