• oidc
  • wordpress

Integrera med WordPress för auktorisering

En andra del av serien om att integrera Logto med WordPress, med fokus på auktorisering.

Sijie
Sijie
Developer

I den föregående artikeln diskuterade vi hur man integrerar Logto för autentisering i WordPress. Denna artikel, som del två, kommer att fördjupa sig i auktoriseringsprocessen, med fokus på rollsysten i WordPress och hur man implementerar rollmapping med Logto, eftersom plugin-programmet vi använde i föregående artikel inte tillhandahåller auktoriseringsmöjligheter direkt.

Vi kommer att skapa en rollmappingfunktion som automatiskt tilldelar WordPress-roller till användare baserat på deras roller som tillhandahålls av Logtos RBAC (Rollbaserad åtkomstkontroll).

Förstå WordPress användarroller

WordPress har ett inbyggt system för hantering av användarroller som definierar vilka åtgärder (möjligheter) en användare kan utföra på en webbplats. De förinställda användarrollerna inkluderar Administratör, Redaktör, Författare, Medarbetare och Prenumerant, var och en med sitt eget uppsättning av möjligheter.

Dessa roller är avgörande för att upprätthålla webbplatsens säkerhet och effektivitet, eftersom de hjälper till att säkerställa att användarna har lämpliga åtkomstnivåer baserat på deras ansvar.

Lösningen: anpassad rollmapping

Logto använder Rollbaserad åtkomstkontroll (RBAC) som sin auktoriseringsmodell och använder "scopes" som den minsta enheten av behörighet. Dessa scopes definierar de specifika åtgärder som en autentiserad användare får utföra inom en applikation. WordPress fungerar dock enligt en annan princip för hantering av användarbehörigheter och förlitar sig på fördefinierade "roller" som bundlar olika möjligheter tillsammans.

Med tanke på denna fundamentala skillnad föreslår vi att skapa speciella roller inom Logto som motsvarar de roller som definieras i WordPress. Dessa roller kanske inte har några scopes, de används endast som en referens för att mappa användare till WordPress-roller.

Förutsättningar

Innan du fortsätter, se till att du har följande:

  • Slutför den föregående artikeln om att integrera Logto med WordPress för autentisering, detta inkluderar:
    • En WordPress-webbplats med administratörsåtkomst.
    • Ett Logto-konto med en applikation som ställts in för din WordPress-webbplats.
    • OpenID Connect Generic-plugin installerad och konfigurerad på din WordPress-webbplats.
  • Ställ in roller i Logto som motsvarar rollerna i WordPress. Till exempel, om du har en 'redaktör'-roll i WordPress, skapa en 'group:editors'-roll i Logto.

Implementera rollmapping med anpassad kod

För att implementera rollmapping kommer vi att lägga till anpassad kod i WordPress-temats functions.php-fil. Detta innebär att använda wp_login-aktionsknappen, som triggar när en användare loggar in. Här är en steg-för-steg-guide för hur man ställer in detta:

Steg 1: åtkomst till ditt temas functions.php

Öppna ditt temas functions.php-fil. Du kan komma åt denna fil via WordPress adminpanel genom att navigera till Utseende > Temaredigerare och välja functions.php från filerna på högra sidan. Eller i källkoden, navigera till din WordPress tematkatalog och hitta functions.php-filen. Denna fil låter dig lägga till anpassade PHP-funktioner som utökar funktionaliteten av din WordPress-webbplats.

Steg 2: skriv rollmappingfunktionen

Nedan är ett enkelt exempel på en funktion som du kanske lägger till i functions.php. Denna funktion kommer att triggas vid användarinloggning och kommer att tilldela roller baserat på användarens roles-anspråk hämtat från Logto.

Steg 3: förstå koden och anpassa den

  • logto_handler-funktionen: Denna funktion tar två parametrar: $user_login (användarnamn) och $user (användarobjekt). Den hämtar roller från Logto som lagrades i användarmetaanvändningsdata som openid-connect-generic-last-user-claim, mappar denna roll till en motsvarande WordPress-roll och tilldelar den till användaren.

  • add_action: Denna rad kopplar logto_handler-funktionen till wp_login-aktionen, som triggas efter en användarinloggning. 10 är prioriteten (standard) och 2 anger antalet argument funktionen accepterar.

Exemplet ovan tilldelar redaktörsrollen till användare som autentiserats via Logto med rollnamn group:editors. Men i ett verkligt scenario kommer du troligtvis behöva implementera fler typer av rollmapping.

Du kan hitta en lista över WordPress-roller och deras kapaciteter här.

Steg 4: testa din konfiguration

Låt oss nu testa rollmapping-funktionen genom att logga in med en användare som har group:editors-roll i Logto. Efter inloggning, kolla användarens roll i WordPress för att säkerställa att mappningen fungerar korrekt.

Slutsats

Genom att integrera Logto med WordPress för både autentisering och auktorisering kan du förbättra säkerheten och funktionaliteten på din webbplats. Kom ihåg, medan koden som tillhandahålls här är ett grundläggande exempel, du kan behöva anpassa den för att passa rollerna och behörighetsstrukturen för din WordPress-webbplats.