Nederlands
  • oidc
  • wordpress

Integreren met WordPress voor autorisatie

Een tweede deel van de serie over het integreren van Logto met WordPress, met de focus op autorisatie.

Sijie
Sijie
Developer

In het vorige artikel hebben we besproken hoe je Logto kunt integreren voor authenticatie in WordPress. Dit artikel, als deel twee, zal ingaan op het autorisatieproces, met de nadruk op het rolensysteem in WordPress en hoe roltoewijzing met Logto te implementeren, aangezien de plugin die we in het vorige artikel hebben gebruikt, niet direct autorisatiecapaciteiten biedt.

We creëren een roltoewijzingsfunctie die automatisch WordPress-rollen aan gebruikers toewijst op basis van hun rollen die worden verstrekt door Logto RBAC (Role-Based Access Control).

Begrip van WordPress-gebruikersrollen

WordPress heeft een ingebouwd gebruikersrolbeheer systeem dat definieert welke acties (mogelijkheden) een gebruiker op een site kan uitvoeren. De standaard gebruikersrollen omvatten Administrator, Editor, Author, Contributor en Subscriber, elk met hun eigen set van mogelijkheden.

Deze rollen zijn cruciaal voor het behoud van de veiligheid en efficiëntie van siteactiviteiten, omdat ze ervoor zorgen dat gebruikers de juiste toegangsrechten hebben op basis van hun verantwoordelijkheden.

De oplossing: aangepaste roltoewijzing

Logto maakt gebruik van Role-Based Access Control (RBAC) als zijn autorisatiemodel, waarbij "scopes" de kleinste eenheid van toestemming zijn. Deze scopes definiëren de specifieke acties die een geauthenticeerde gebruiker binnen een applicatie mag uitvoeren. WordPress werkt echter op een ander principe voor het beheren van gebruikersrechten, waarbij vertrouwen wordt gesteld in vooraf gedefinieerde "rollen" die verschillende mogelijkheden bundelen.

Gezien dit fundamentele verschil raden we aan om speciale rollen binnen Logto te creëren die overeenkomen met de rollen die in WordPress zijn gedefinieerd. Die rollen hoeven geen scopes te hebben; ze worden alleen gebruikt als referentie voor het toewijzen van gebruikers aan WordPress-rollen.

Vereisten

Voordat je verdergaat, zorg ervoor dat je het volgende hebt:

  • Voltooi het vorige artikel over het integreren van Logto met WordPress voor authenticatie, dit omvat:
    • Een WordPress-site met beheerders toegang.
    • Een Logto-account met een applicatie die is ingesteld voor je WordPress-site.
    • De OpenID Connect Generic plugin geïnstalleerd en geconfigureerd op je WordPress-site.
  • Stel rollen in Logto in die overeenkomen met de rollen in WordPress. Bijvoorbeeld, als je een 'editor'-rol hebt in WordPress, creëer dan een 'group:editors'-rol in Logto.

Roltoewijzing implementeren met aangepaste code

Om roltoewijzing te implementeren, voegen we aangepaste code toe aan het functions.php bestand van het WordPress-thema. Dit betreft het gebruik van de wp_login actiehaak, die wordt geactiveerd wanneer een gebruiker inlogt. Hier is een stapsgewijze handleiding over hoe je dit kunt instellen:

Stap 1: open het functions.php van je thema

Open het functions.php bestand van je thema. Je kunt dit bestand openen via het WordPress-beheerderspaneel door naar Weergave > Thema-editor te gaan en functions.php te selecteren uit de bestandslijst aan de rechterkant. Of navigeer in de broncode naar je WordPress-themamap en zoek het functions.php bestand. Dit bestand stelt je in staat om aangepaste PHP-functies toe te voegen die de functionaliteit van je WordPress-site uitbreiden.

Stap 2: schrijf de roltoewijzingsfunctie

Hieronder is een eenvoudig voorbeeld van een functie die je zou kunnen toevoegen aan functions.php. Deze functie wordt geactiveerd bij gebruikerslogin en wijst rollen toe op basis van de roles claim van de gebruiker die is opgehaald van Logto.

Stap 3: begrijpen van de code en aanpassen

  • logto_handler functie: Deze functie neemt twee parameters: $user_login (gebruikersnaam) en $user (gebruikersobject). Het haalt rollen op van Logto die zijn opgeslagen in gebruikers meta als openid-connect-generic-last-user-claim, map deze rol naar een overeenkomstige WordPress-rol en wijst deze toe aan de gebruiker.

  • add_action: Deze regel koppelt de logto_handler functie aan de wp_login actie, die wordt geactiveerd nadat een gebruiker inlogt. De 10 is de prioriteit (standaard), en 2 geeft het aantal argumenten aan dat de functie accepteert.

In het bovenstaande voorbeeld wordt de 'editor'-rol toegewezen aan gebruikers die zijn geverifieerd via Logto met rolnaam group:editors. In een echte wereldscenario zul je echter waarschijnlijk meer soorten roltoewijzingen moeten implementeren.

Je kunt de lijst met WordPress-rollen en hun capaciteiten hier vinden.

Stap 4: test je installatie

Laten we nu de roltoewijzingsfunctie testen door in te loggen met een gebruiker die de group:editors rol in Logto heeft. Controleer na het inloggen de rol van de gebruiker in WordPress om ervoor te zorgen dat de toewijzing correct werkt.

Conclusie

Door Logto te integreren met WordPress voor zowel authenticatie als autorisatie, kun je de beveiliging en functionaliteit van je site verbeteren. Vergeet niet dat, hoewel de hier verstrekte code een eenvoudig voorbeeld is, je deze mogelijk moet aanpassen om te passen bij de rollen en toestemmingsstructuur van je WordPress-site.