logo

Extra Block Types (EBT) - New Layout Builder experience❗

Extra Block Types (EBT) - styled, customizable block types: Slideshows, Tabs, Cards, Accordions and many others. Built-in settings for background, DOM Box, javascript plugins. Experience the future of layout building today.

Demo EBT modules Download EBT modules

❗Extra Paragraph Types (EPT) - New Paragraphs experience

Extra Paragraph Types (EPT) - analogical paragraph based set of modules.

Demo EPT modules Download EPT modules

Scroll
21/06/2025, by Ivan

L’authentification par clé API est l’une des méthodes les plus simples pour protéger les API REST de Drupal. Une fois que vous avez généré des clés API pour tous vos utilisateurs, vous pouvez ensuite utiliser ces clés pour sécuriser l’accès à vos API REST Drupal.

Pour ce faire, il suffit d’envoyer le nom d’utilisateur Drupal ainsi que la clé API dans l’en-tête Authorization de chacune de vos requêtes API. Le module Drupal API Authentication authentifiera alors la requête en fonction du nom d’utilisateur et de la clé API correspondante. Ce module est compatible avec Drupal 7, Drupal 8, Drupal 9, Drupal 10 et Drupal 11.

 Télécharger 

Vidéo de configuration :

Vidéo Youtube sur l’authentification par clé API REST Drupal

Prérequis : téléchargement et installation :

  • Téléchargez et installez le module Drupal REST & JSON API Authentication.
  • REST UI : ce module vous fournit une interface utilisateur pour configurer le module REST.
  • Activez les modules de services web suivants dans la section Étendre (/admin/modules) de votre site Drupal :
    • REST UI
    • RESTful Web Services
    • Serialization

    Drupal Rest api

Étapes pour configurer l’authentification par clé API dans Drupal :

  • Pour une meilleure compréhension, nous prendrons l’exemple d’ajouter une authentification par clé API à l’API de création d’utilisateur de Drupal.
  • Notez bien que l’API /entity/user de Drupal est utilisée pour créer un utilisateur dans Drupal.

Activez l’API et assignez les méthodes et opérations comme suit :

  • La première étape consiste à activer l’API et à assigner les méthodes et opérations autorisées pour cette API. Cela peut être fait via le module REST UI ou en modifiant la configuration directement.
  • Pour activer l’API via le module REST UI, cliquez sur le bouton Configurer du module REST UI (comme montré ci-dessous) :

    clé API

  • Dans notre exemple, il faut activer l’API /entity/user. Activez cette API via l’option d’activation devant elle.

    clé API

  • Puisque notre objectif est de créer un utilisateur dans Drupal, sélectionnez les configurations suivantes :
    • Méthode : POST
    • Format : json
    • Fournisseur d’authentification : rest_api_authentication
  • La sélection de rest_api_authentication permettra au module miniOrange REST API Authentication d’authentifier votre API /entity/user. Cliquez sur le bouton Enregistrer la configuration pour continuer.

    drupal sélection

Créer un champ clé API utilisateur dans Drupal :

Note : si vous utilisez la version gratuite du module, vous pouvez passer cette étape.

Dans cette étape, nous allons configurer la manière dont la clé API sera utilisée pour authentifier les appels API. Pour ce faire, il faut d’abord créer un champ attribut utilisateur pour stocker une clé API.

  • Allez à l’onglet de gestion des champs utilisateur (/admin/config/people/accounts/fields) dans Drupal.
  • Pour ajouter un champ, cliquez sur le bouton Ajouter un champ.

    gestion des champs

  • Dans la liste déroulante Ajouter un nouveau champ, sélectionnez l’option Texte (simple) et saisissez Clé API dans le champ label. Cliquez ensuite sur le bouton Enregistrer et continuer pour sauvegarder vos paramètres.
  • Assurez-vous que le nom machine du champ utilisateur soit field_api_key.

    Ajouter champ

  • Poursuivez en cliquant sur Enregistrer les paramètres du champ puis sur Enregistrer les paramètres pour finaliser la création du champ.

    Enregistrer champ

    Paramètres clé API Drupal

  • Vous pouvez désormais voir un champ supplémentaire Clé API dans le profil utilisateur.

Configurer l’authentification par clé API :

  • Dans cette étape, nous allons générer une clé API. Pour cela, rendez-vous à l’onglet Authentification API du module REST API Authentication (/admin/config/people/rest_api_authentication/auth_settings).
  • Cochez la case Activer l’authentification puis cliquez sur Enregistrer les paramètres.
  • Pour activer l’authentification par clé API, sélectionnez le bouton radio Clé API.
  • Sur la même page, vous pouvez générer la clé API pour un utilisateur spécifique ou pour tous les utilisateurs en une seule fois.
  • Nous allons générer la clé API pour un seul utilisateur dans cet exemple.
  • Dans le champ texte Entrer le nom d’utilisateur, saisissez le nom d’utilisateur pour lequel vous souhaitez générer la clé API, puis cliquez sur le bouton Générer la clé API pour cet utilisateur.
  • Vous pouvez désormais voir la clé API générée dans le champ clé API de votre profil utilisateur.

    Créer clé REST API

  • Gardez cette clé API à portée de main, elle sera utilisée plus tard pour l’authentification des API.

Attribuer aux rôles Drupal la permission de créer un utilisateur :

  • Si besoin, vous pouvez aussi donner à des rôles Drupal non administrateurs la permission de créer un utilisateur. Pour cela, assignez aux rôles Drupal la permission Gérer les utilisateurs dans la section permissions (/admin/people/permissions) de votre site Drupal.

    REST API

Voilà, c’est tout !!!

  • Essayons maintenant de créer un utilisateur dans Drupal via un appel API en utilisant une clé API pour l’authentification.

Exemple :

  • Pour créer un utilisateur dans Drupal, vous devez effectuer une requête POST en incluant le nom d’utilisateur et la clé API délivrée par le module miniOrange REST API Authentication. Les valeurs du nom d’utilisateur et de la clé API doivent être encodées en base64. Vous pouvez vous référer au format ci-dessous pour faire un appel.

    Requête : POST  <votre_url_base_drupal>/entity/user?_format=json
    En-tête : Authorization: Basic base64encodé <username:api_key>
                 Accept: application/json
                 Content-Type: application/json

    Corps :

    {
                "name": [
                            {"value": "<username>"}
                    ],
               "mail": [
                            {"value": "<email>"}
                    ],
                "pass":[
                            {"value": "<password>"}
                    ],
                "status":[
                            {"value": "1"}
                    ]
    }

    Format de la requête CURL -

    curl --location --request POST  ‘<votre_url_base_drupal>/entity/user?_format=json' \
    --header 'Accept: application/json' \
    --header 'Content-Type: application/json' \
    --header 'Authorization: Basic base64encodé<username:clé API>' \
    --data-raw '  

    {
        "name": [
            {"value": "NomUtilisateur"}
        ],
        "mail": [
            {"value": "email"}
        ],
        "pass":[
            {"value": "MotDePasse"}
        ],
        "status":[
            {"value": "1"}
        ]
    }'

  • Vous pouvez également vous référer à l’image de la requête Postman ajoutée ci-dessous :

    postman

  • Une réponse réussie retourne les informations de l’utilisateur que vous avez créé. (voir l’image ci-dessous)

    Réponse Postman

  • Si vous recevez une erreur dans la réponse, vous pouvez consulter le tableau ci-dessous pour la description de l’erreur et les solutions possibles.

Réponses d’erreur :

Erreur Description
MISSING_AUTHORIZATION_HEADER

Cette erreur survient lorsque vous n’envoyez pas d’en-tête Authorization dans la requête API ou si celui-ci a été supprimé par le serveur pour une raison quelconque.

Exemple :
{
  "status": "error",
  "error": "MISSING_AUTHORIZATION_HEADER",
  "error_description": "En-tête Authorization non reçu."
}

INVALID_AUTHORIZATION_HEADER_TOKEN_TYPE Cette erreur survient lorsque vous envoyez un en-tête Authorization mais dans un format invalide.
Exemple :
{
  "status": "error",
  "error": "INVALID_AUTHORIZATION_HEADER_TOKEN_TYPE",
  "error_description": "L’en-tête Authorization doit être de type Basic Authentication."
}
USER_DOES_NOT_EXIST

Cette erreur survient lorsque le module ne trouve aucun compte correspondant au nom d’utilisateur envoyé dans la requête.

Exemple :
{
  "status": "error",
  "error": "USER_DOES_NOT_EXIST",
  "error_description": "L’utilisateur n’existe pas."
}

INVALID_API_KEY

Cette erreur survient lorsque la clé API envoyée dans l’appel API ne correspond pas.

Exemple :
{
  "status": "error",
  "error": "INVALID_API_KEY",
  "error_description": "La clé API envoyée dans la requête semble invalide ou incorrecte."
}

USER_NAME_MISSING

Cette erreur survient lorsque le module ne parvient pas à trouver le nom d’utilisateur dans l’appel API.

Exemple :
{
  "status": "error",
  "error": "USER_NAME_MISSING",
  "error_description": "Le nom d’utilisateur est manquant dans la requête."
}

INVALID_AUTHORIZATION_HEADER

Cette erreur survient lorsque le module ne parvient pas à décoder correctement l’en-tête ou ne trouve pas le nom d’utilisateur et la clé API dans l’en-tête.

Exemple :
{
  "status": "error",
  "error": "INVALID_AUTHORIZATION_HEADER",
  "error_description": "L’en-tête d’autorisation semble invalide."
}

Article extrait de la Documentation Drupal.