Italiano
  • oidc
  • wordpress

Integrazione con WordPress per l'autorizzazione

La seconda parte della serie sull'integrazione di Logto con WordPress, incentrata sull'autorizzazione.

Sijie
Sijie
Developer

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 come openid-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 funzione logto_handler all'azione wp_login, che viene attivata dopo l'accesso di un utente. Il 10 è la priorità (predefinita), e 2 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.