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

Le module Drupal API Authentication fonctionne en envoyant un jeton JWT avec vos requêtes API pour l’authentification. Ce module utilise JSON Web Token (JWT), une norme ouverte pour représenter de manière sécurisée l’identité utilisateur lors d’interactions entre deux parties.

Dans cette étape, un nom d’utilisateur et un mot de passe de votre site Drupal sont utilisés pour obtenir d’abord un jeton JWT. Une fois le nom d’utilisateur et le mot de passe vérifiés, le module Drupal REST API Authentication crée un JSON Web Token signé. Ensuite, l’API renvoie ce jeton à l’application cliente.

Une fois que vous avez reçu le jeton JWT, vous pouvez utiliser ce jeton pour effectuer des opérations dans Drupal jusqu’à ce que le jeton expire. Le module Drupal REST API Authentication accordera l’accès uniquement lorsqu’il reçoit un JWT valide de l’application.

Le JWT peut être signé et validé avec deux algorithmes : HSA et RSA.

Voyons comment utiliser un jeton JWT pour l’authentification API dans Drupal.

 Télécharger 

Vidéo d’installation :

Vidéo Youtube Drupal REST API JWT Authentication

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

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

    Activer les modules

Étapes pour configurer l’authentification API basée sur JWT :

  • Pour mieux comprendre, nous prendrons l’exemple d’ajout d’une authentification basée sur JWT pour créer une page basique dans Drupal via l’API /node.

Activez l’API et attribuez les méthodes et opérations suivantes :

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

    Paramètres REST UI

  • Dans notre exemple, nous voulons activer l’API /node sous la section contenu. Activez cette API en utilisant l’option Activer devant elle.

    Ressources

  • Maintenant, comme notre but est de créer une page basique sur 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. Cliquez sur le bouton Enregistrer la configuration pour continuer.

    Paramètres de ressource

Configurer l’authentification API basée sur JWT :

  • Dans cette étape, nous allons configurer JWT comme méthode d’authentification API. Pour cela, rendez-vous dans l’onglet API Authentication du module REST API Authentication (/admin/config/people/rest_api_authentication/auth_settings).

    • Cochez la case Enable Authentication et cliquez sur Enregistrer les paramètres.
    • Sous le bouton Enregistrer les paramètres, sélectionnez le bouton radio JWT.
  • Si vous souhaitez utiliser un jeton JWT créé en externe pour l’authentification, vous pouvez le configurer via les options ci-dessous :

    • Dans le champ texte Username Attribute, saisissez le nom de l’attribut dans lequel votre nom d’utilisateur sera reçu.
    • Si vous souhaitez utiliser un jeton JWT externe, vous pouvez également fournir l’URI JWKS pour valider ce jeton JWT dans Drupal.

      Authentification JWT

Attribuer des permissions aux rôles Drupal pour créer une page :

  • Si nécessaire, vous pouvez également accorder aux rôles Drupal non administrateurs la permission de créer une page basique. Pour cela, attribuez la permission Basic page: Create new content aux rôles Drupal depuis la section permissions (/admin/people/permissions) de votre site Drupal.

    Ajouter des permissions

Voilà !

Essayons maintenant de créer une page basique via un appel API utilisant JWT pour l’authentification.

Exemples :

  • Tout d’abord, il faut effectuer un appel API pour obtenir un JWT. Nous utiliserons ensuite ce jeton pour authentifier l’API Drupal afin de créer une page basique.

  • Le JWT s’obtient en faisant une requête POST contenant le nom d’utilisateur Drupal et le mot de passe. Le nom d’utilisateur et le mot de passe doivent être envoyés en base64. Vous pouvez vous référer au format de requête ci-dessous.

    Requête : POST <votre_url_de_base_drupal>/rest_api/id_token

    En-tête : Authorization: Basic base64encodé <nom_utilisateur:mot_de_passe>
                 Accept: application/json

    Format de la requête CURL :

    curl --location --request POST ' <votre_url_de_base_drupal>/rest_api/id_token' \
    --header 'Accept: application/json' \
    --header 'Content-Type: application/json' \
    --header 'Authorization: Basic base64encodé <nom_utilisateur:mot_de_passe>'

  • Vous pouvez aussi vous référer à l’image de la requête Postman pour obtenir le JWT depuis Drupal.

Requête :

Requête Postman

  • Une réponse réussie retourne le JWT avec sa date d’expiration (voir l’image ci-dessous).

    Jeton JWT Postman

  • En cas d’erreur dans la réponse, vous pouvez vous référer au tableau ci-dessous pour la description de l’erreur et les solutions possibles.

Erreur Description

INVALID_CREDENTIALS

Vous recevrez cette erreur lorsque le nom d’utilisateur ou le mot de passe est incorrect.

Exemple :
{
  "status": "error",
  "error": "INVALID_CREDENTIALS",
  "error_description": "Nom d’utilisateur ou mot de passe invalide."
}

Authentifier les APIs REST Drupal avec le JWT reçu :

  • Pour authentifier avec JWT, ajoutez simplement le JWT reçu comme token Bearer dans l’en-tête Authorization.

    Requête : POST <url_de_base_drupal>/node?_format=json
    En-tête : Authorization: Bearer JWT_reçu
                 Accept: application/json
    Corps :
     {
      "type":[
          {"target_id":"page"}
          ],
      "title":[
          {"value":"Drupal Rest API Authentication"}
          ],
      "body":[
          {"value":"Page créée avec l’authentification JWT."}
          ]
    }

    Format de la requête CURL :

    curl --location --request POST ‘<url_de_base_drupal>/node?_format=json’\
    --header 'Accept: application/json' \
    --header 'Content-Type: application/json' \
    --header 'Authorization: Bearer <JWT_reçu>' \
    --data-raw '

    {
      "type":[
          {"target_id":"page"}
          ],
      "title":[
          {"value":"Drupal Rest API Authentication"}
          ],
      "body":[
          {"value":"Page créée avec l’authentification JWT."}
          ]
    }'
     

Exemple de requête pour créer une page avec authentification basée sur JWT :

  • Vous pouvez également vous référer à la requête Postman correspondante :

    En-têtes Postman

  • Une réponse réussie ressemblera à ceci :

    Réponse Postman

  • Vous pouvez vérifier la page créée dans l’onglet contenu de Drupal.

    Page Drupal

  • Réponses d’erreur et solutions possibles :

Erreur Description
MISSING_AUTHORIZATION_HEADER

Vous obtiendrez cette erreur si vous n’envoyez pas d’en-tête Authorization dans la requête API ou si celui-ci a été supprimé par votre 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

Vous obtiendrez cette erreur lorsque vous envoyez l’en-tête Authorization mais que le type de jeton n’est pas Bearer.

Exemple :
{
    "status": "error",
    "error": "INVALID_AUTHORIZATION_HEADER_TOKEN_TYPE",
    "error_description": "L’en-tête Authorization doit être de type Bearer Token."
}

TOKEN_EXPIRED

Vous obtiendrez cette erreur lorsque vous envoyez l’en-tête Authorization mais que le jeton d’accès est expiré.

Exemple :
{
    "status": "error"
    "error": "TOKEN_EXPIRED"
    "message": "Requête invalide : jeton expiré."
}

USER_INFORMATION_NOT_FOUND

Vous obtiendrez cette erreur lors de la tentative de récupération des informations utilisateur.

Exemple :
{
    "status": "error"
    "error": "USER_INFORMATION_NOT_FOUND"
    "message": "Impossible de récupérer les informations utilisateur."
}

INVALID_SIGNATURE

Vous obtiendrez cette erreur lorsque la signature du jeton n’est pas valide.

Exemple :
{
    "status": "error"
    "error": "INVALID_SIGNATURE"
    "message": "Signature du jeton invalide."
}

Article extrait de la documentation Drupal.