Integrazione con WordPress per l'autorizzazione
La seconda parte della serie sull'integrazione di Logto con WordPress, incentrata sull'autorizzazione.
Nel precedente articolo, abbiamo discusso su come integrare Logto per l'autenticazione in WordPress. Questo articolo, come seconda parte, approfondirà il processo di autorizzazione, concentrandosi sul sistema di ruoli in WordPress e su come implementare la mappatura dei ruoli con Logto, dato che il plugin che abbiamo utilizzato nell'articolo precedente non fornisce direttamente capacità di autorizzazione.
Creeremo una funzione di mappatura dei ruoli che assegna automaticamente ai utenti i ruoli di WordPress in base ai loro ruoli forniti da Logto RBAC (Controllo degli accessi basato sui ruoli).
Capire i ruoli degli utenti di WordPress
WordPress ha un sistema di gestione dei ruoli utente integrato che definisce quali azioni (capacità) un utente può eseguire su un sito. I ruoli utente predefiniti includono Amministratore, Editor, Autore, Contributore e Abbonato, ognuno con il suo proprio insieme di capacità
Questi ruoli sono cruciali per mantenere la sicurezza e l'efficienza delle operazioni del sito, poiché aiutano a garantire che gli utenti abbiano livelli di accesso appropriati in base alle loro responsabilità.
La soluzione: mappatura personalizzata dei ruoli
Logto utilizza il Controllo degli accessi basato sui ruoli (RBAC) come modello di autorizzazione, utilizzando "scope" come la più piccola unità di permesso. Questi ambiti definiscono le specifiche azioni che un utente autenticato può eseguire all'interno di un'applicazione. Tuttavia, WordPress opera su un principio diverso per la gestione dei permessi degli utenti, basandosi su "ruoli" predefiniti che raggruppano varie capacità insieme.
Data questa differenza fondamentale, suggeriamo di creare ruoli speciali all'interno di Logto che corrispondono ai ruoli definiti in WordPress. Questi ruoli potrebbero non avere alcuno scope, sono utilizzati solo come riferimento per mappare gli utenti ai ruoli di WordPress.
Prerequisiti
Prima di procedere, assicurati di avere il seguente:
- Termina l'articolo precedente sull'integrazione di Logto con WordPress per l'autenticazione, questo include:
- Un sito WordPress con accesso amministratore.
- Un account Logto con un'applicazione configurata per il tuo sito WordPress.
- Il plugin OpenID Connect Generic installato e configurato sul tuo sito WordPress.
- Configura i ruoli in Logto che corrispondono ai ruoli in WordPress. Ad esempio, se hai un ruolo 'editore' in WordPress, crea un ruolo 'gruppo:redattori' in Logto.
Implementare la mappatura dei ruoli con codice personalizzato
Per implementare la mappatura dei ruoli, aggiungeremo codice personalizzato al file functions.php
del tema WordPress. Questo coinvolge l'uso dell'hook di azione wp_login
, che si attiva quando un utente accede. Ecco una guida passo-passo su come impostare questo:
Passaggio 1: accedere alle funzioni del tuo tema.php
Apri il file functions.php
del tuo tema. Puoi accedere a questo file tramite il pannello di amministrazione di WordPress navigando in Aspetto > Editor del tema e selezionando functions.php
dall'elenco dei file a destra. Oppure nel codice sorgente, vai alla directory del tuo tema WordPress e localizza il file functions.php
. Questo file ti permette di aggiungere funzioni PHP personalizzate che estendono la funzionalità del tuo sito WordPress.
Passaggio 2: scrivi la funzione di mappatura dei ruoli
Di seguito è riportato un semplice esempio di una funzione che potresti aggiungere a functions.php. Questa funzione verrà attivata all'accesso dell'utente, e assegnerà i ruoli in base alla roles
claim recuperata da Logto.
Passaggio 3: comprensione del codice e personalizzazione
-
funzione
logto_handler
: Questa funzione prende due parametri:$user_login
(nome utente) e$user
(oggetto utente). Recupera ruoli da Logto che sono memorizzati in meta utente comeopenid-connect-generic-last-user-claim
, mappa questo ruolo a un ruolo corrispondente di WordPress, e lo assegna all'utente. -
add_action
: Questa riga collega la funzionelogto_handler
all'azionewp_login
, che viene attivata dopo l'accesso di un utente. Il10
è la priorità (predefinita), e2
indica il numero di argomenti che la funzione accetta.
L'esempio sopra assegna il ruolo 'editor' agli utenti autenticati tramite Logto con il nome del ruolo group:editors
. Tuttavia, in uno scenario del mondo reale, probabilmente dovrai implementare altri tipi di mappature di ruoli.
Puoi trovare l'elenco dei ruoli di WordPress e le loro capacità qui.
Passaggio 4: testa la tua configurazione
Ora, testiamo la funzione di mappatura dei ruoli accedendo con un utente che ha il ruolo group:editors
in Logto. Dopo l'accesso, controlla il ruolo dell'utente in WordPress per assicurarti che la mappatura funzioni correttamente.
Conclusione
Integrando Logto con WordPress per l'autenticazione e l'autorizzazione, puoi potenziare la sicurezza e la funzionalità del tuo sito. Ricorda, mentre il codice qui fornito è un esempio basilare, potresti aver bisogno di adattarlo alla struttura dei ruoli e dei permessi del tuo sito WordPress.