Autenticación con clave API
L’autenticazione con API Key è uno dei metodi più semplici per proteggere le API REST di Drupal. Una volta generate le API Key per tutti i tuoi utenti, puoi utilizzare tali chiavi per proteggere l’accesso alle API REST di Drupal.
Puoi farlo inviando il nome utente Drupal e la API key dell’utente nell’header Authorization di ogni richiesta API. Il modulo Drupal API Authentication autenticherà quindi la richiesta in base al nome utente e alla corrispondente API key. Questo modulo è compatibile con Drupal 7, Drupal 8, Drupal 9, Drupal 10 e Drupal 11.
Video di configurazione:
Prerequisiti: Download e Installazione:
- Scarica e installa il modulo Drupal REST & JSON API Authentication.
- REST UI: Questo modulo ti fornisce un’interfaccia grafica per configurare il modulo REST.
- Abilita i seguenti moduli Web Services dalla sezione Estendi (/admin/modules) del tuo sito Drupal:
- REST UI
- RESTful Web Services
- Serialization
Passaggi per configurare l’autenticazione basata su API Key in Drupal:
- Per una migliore comprensione, prenderemo come esempio l’aggiunta dell’autenticazione basata su API Key alla API Create User di Drupal.
- Nota che l’API /entity/user di Drupal viene utilizzata per creare un utente in Drupal.
Abilita l’API e assegna metodi e operazioni come segue:
- Il primo passaggio è abilitare l’API e assegnare i metodi e le operazioni consentite per quella particolare API. Questo può essere fatto utilizzando il modulo REST UI oppure modificando direttamente la configurazione.
- Per abilitare l’API usando il modulo REST UI, clicca sul pulsante Configura del modulo REST UI (come mostrato sotto)
- Considerando il nostro esempio, dobbiamo abilitare l’API /entity/user. Abilita questa API usando l’opzione Abilita davanti ad essa.
- Ora, poiché il nostro obiettivo è creare un utente in Drupal, seleziona le seguenti configurazioni:
- Metodo: POST
- Formato: json
- Provider di autenticazione: rest_api_authentication.
- Selezionando rest_api_authentication permetterai al modulo miniOrange REST API Authentication di autenticare la tua API /entity/user. Clicca sul pulsante Salva configurazione per continuare.
Crea un campo utente API Key in Drupal:
Nota: Se stai usando la versione gratuita del modulo puoi saltare questo passaggio.
In questo passaggio, configureremo come viene usata la API key per autenticare le chiamate API. Per farlo, prima dobbiamo creare un campo Attributo Utente per memorizzare una API key.
- Vai alla scheda gestisci campi (/admin/config/people/accounts/fields) di Drupal.
- Per aggiungere il campo, clicca sul pulsante Aggiungi campo.
- Ora dal menu a discesa Aggiungi un nuovo campo, seleziona l’opzione Testo (semplice) e inserisci API Key nel campo etichetta. Ora, clicca sul pulsante Salva e continua per salvare le tue impostazioni.
- Assicurati che il nome macchina dell’attributo utente sia field_api_key.
- Ora procedi cliccando su Salva impostazioni campo e poi su Salva impostazioni per completare la creazione del campo.
- Ora puoi vedere un campo di testo API Key aggiuntivo presente nel tuo profilo utente.
Configura l’autenticazione basata su API Key:
- In questo passaggio genereremo una API Key, per farlo vai alla scheda API Authentication del modulo REST API Authentication. (/admin/config/people/rest_api_authentication/auth_settings)
- Seleziona la casella Abilita autenticazione e clicca su Salva impostazioni.
- Per abilitare l’autenticazione basata su API Key, seleziona il pulsante di opzione API Key.
- Nella stessa schermata, puoi generare la API key per un utente specifico oppure per tutti gli utenti contemporaneamente.
- Per ora genereremo la API key solo per un singolo utente.
- Nel campo di testo Inserisci nome utente, inserisci il nome utente per cui desideri generare la API key e clicca sul pulsante Genera API key per questo utente.
- Ora puoi visualizzare la API Key generata nel campo API Key del tuo profilo utente.
- Tieni a portata di mano la API key poiché sarà utilizzata successivamente per autenticare l’API.
Concedi ai ruoli Drupal il permesso di creare un utente in Drupal:
- Se necessario, puoi anche concedere ai ruoli non amministrativi di Drupal il permesso di creare un utente in Drupal. Puoi farlo assegnando ai ruoli Drupal il permesso Amministrare utenti dalla sezione permessi (/admin/people/permissions) del tuo sito Drupal.
Ecco fatto!!!
- Ora proviamo a creare un utente in Drupal tramite una chiamata API utilizzando una API key per l’autenticazione.
Esempio:
- Per creare un utente in Drupal devi effettuare una richiesta POST insieme al nome utente e alla API key emessa dal modulo miniOrange REST API Authentication. Il valore del nome utente e della API key deve essere in formato base64encoded. Puoi fare riferimento al formato seguente per effettuare una chiamata.
Richiesta: POST <your_drupal_base_url>/entity/user?_format=json
Header: Authorization: Basic base64encoded <username:api_key>
Accept: application/json
Content-Type: application/jsonBody:
{
"name": [
{"value": "<username>"}
],
"mail": [
{"value": "<email>"}
],
"pass":[
{"value": "<password>"}
],
"status":[
{"value": "1"}
]
}Formato richiesta CURL-
curl --location --request POST ‘<your_drupal_base_url>/entity/user?_format=json' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--header 'Authorization: Basic base64encoded<username:API key>’ \
--data-raw '{
"name": [
{"value": "Username"}
],
"mail": [
{"value": "email"}
],
"pass":[
{"value": "Password"}
],
"status":[
{"value": "1"}
]
}'
- Puoi anche fare riferimento all’immagine della richiesta Postman aggiunta sotto:
- Una risposta corretta restituisce le informazioni dell’utente che hai creato. (vedi immagine sotto)
- Se ricevi un errore nella risposta, puoi consultare la tabella seguente per la descrizione dell’errore e le possibili soluzioni.
Risposta di errore:
Errore | Descrizione |
MISSING_AUTHORIZATION_HEADER |
Riceverai questo errore ogni volta che non invii un Authorization Header nella richiesta API o se è stato rimosso dal tuo server per qualche motivo. Esempio: |
INVALID_AUTHORIZATION_HEADER_TOKEN_TYPE | Riceverai questo errore quando invii l’header Authorization ma in un formato non valido. Esempio: { "status": "error", "error": "INVALID_AUTHORIZATION_HEADER_TOKEN_TYPE", "error_description": "L’header Authorization deve essere del tipo Basic Authentication." } |
USER_DOES_NOT_EXIST |
Riceverai questo errore ogni volta che il modulo non trova nessun account corrispondente al nome utente che hai inviato nella richiesta. Esempio: |
INVALID_API_KEY |
Riceverai questo errore ogni volta che la API key inviata nella chiamata API non corrisponde. Esempio: |
USER_NAME_MISSING |
Riceverai questo errore ogni volta che il modulo non riesce a trovare il nome utente nella chiamata API. Esempio: |
INVALID_AUTHORIZATION_HEADER |
Riceverai questo errore ogni volta che il modulo non riesce a decodificare correttamente l’header oppure non trova il nome utente e la API key nell’header. Esempio: |
Articolo da Documentazione Drupal.