Zum Hauptinhalt springen

Authentifizierung zu deiner WordPress-Anwendung hinzufügen

Dieses Tutorial zeigt dir, wie du Logto in deine WordPress Website integrierst.

Voraussetzungen

Integration

Plugin installieren

Wir werden das OpenID Connect Generic Plugin verwenden, um Logto über das OIDC-Protokoll in deine WordPress-Website zu integrieren.

  1. Melde dich bei deiner WordPress-Seite an.
  2. Navigiere zu "Plugins" und klicke auf "Neu hinzufügen".
  3. Suche nach "OpenID Connect Generic" und installiere das Plugin von daggerhart.
  4. 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-FeldBeschreibung
Client IDDie App-ID deiner Logto-Anwendung
Client SecretDas App-Geheimnis deiner Logto-Anwendung
OpenID ScopeGib email profile openid offline_access ein
Login Endpoint URLDie 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 URLDie Userinfo-Endpunkt-URL deiner Logto-Anwendung, die https://[tenant-id].logto.app/oidc/me ist.
Token Validation Endpoint URLDie Token-Validierungsendpunkt-URL deiner Logto-Anwendung, die https://[tenant-id].logto.app/oidc/token ist.
End Session Endpoint URLDie End-Session-Endpunkt-URL deiner Logto-Anwendung, die https://[tenant-id].logto.app/oidc/session/end ist.
Identity KeyDer 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 KeyDer 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:

  1. Melde dich von deiner WordPress-Seite ab.
  2. Besuche die WordPress-Anmeldeseite und klicke auf die Schaltfläche "Mit Logto anmelden".
  3. Du wirst zur Logto-Anmeldeseite weitergeleitet.
  4. Melde dich mit deinem Logto-Konto an.
  5. 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 als openid-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 die logto_handler Funktion mit der wp_login Aktion, die nach der Benutzeranmeldung ausgelöst wird. Die 10 ist die Priorität (Standard), und 2 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.

Weiterführende Lektüre

Endbenutzerflüsse: Authentifizierungsflüsse, Kontoflüsse und Organisationsflüsse Connectors konfigurieren Schütze deine API