Configurer l'authentification JWT dans Drupal
Le Authentification API Drupal Le module utilise des jetons Web JSON (JWT) pour authentifier les requêtes API de manière sécurisée. Votre nom d'utilisateur et votre mot de passe Drupal sont d'abord vérifiés afin de générer un jeton JWT signé, qui est ensuite renvoyé au client. Ce jeton permet d'accéder aux API Drupal jusqu'à son expiration. JWT prend en charge les algorithmes HSA et RSA pour la signature et la validation. Ce module est entièrement compatible avec Drupal 8, Drupal 9, Drupal 10 et Drupal 11.
- Utiliser le compositeur
- Utiliser Drush
- Installation manuelle
Conditions préalables:
- Interface utilisateur REST: Ce module fournit une interface conviviale pour configurer le module REST.
- Activez les modules de services Web suivants à partir du étendre section (/admin/modules) de votre site Drupal :
- JSON : API
- Interface utilisateur REST
- Services Web RESTful
- La sérialisation
Activer l'API et attribuer des méthodes :
- La première étape consiste à activer l'API et à lui attribuer les méthodes et opérations autorisées. Pour ce faire, utilisez l'option Interface utilisateur REST module, ou en modifiant directement la configuration Drupal.
- Cliquez sur le Activer l'API .
- Pour activer l'API à l'aide du module REST UI, cliquez sur le Configurez bouton (comme indiqué ci-dessous).
- Dans notre exemple, nous devons activer le /entité/utilisateur API. Pour ce faire, cliquez sur l'option Activer devant.
- Puisque notre objectif est de créer un utilisateur dans Drupal, sélectionnez les configurations suivantes :
- Préparation: POSTEZ
- Format: JSON
- Fournisseur d'authentification : authentification_rest_api
- Cela permet au module d'authentification de l'API miniOrange d'authentifier l'API. Cliquez sur le Enregistrer la configuration pour continuer.
Étapes de configuration
1. Configurer la méthode d'authentification JWT :
- Dans cette étape, nous allons configurer JWT comme méthode d'authentification API. Pour cela, accédez à Authentification API onglet du module (/admin/config/people/rest_api_authentication/auth_settings).
- Sous Configuration de base, activez le Activer l'authentification basculer.
- Entrer le Nom de l'application et sélectionnez JWT du Méthode d'authentification .
- Faites défiler jusqu'à la Configuration JWT section sur le même onglet.
- Dans le champ Attribut du nom d’utilisateur, saisissez le nom d’attribut du JWT reçu qui contient le nom d’utilisateur Drupal.
- Choisir Algorithme de signature de la liste déroulante.
- Facultatif : saisissez la durée d'expiration souhaitée (en minutes) sous Heure d'expiration du jeton.
- URI JWKS : Si vous souhaitez utiliser un jeton JWT externe, fournissez l'URI JWKS pour le valider dans Drupal.
- Certificat/Clé secrète : Fournissez un certificat si RS256 est sélectionné, ou une clé secrète si HS256 est sélectionné.
- Clé privée: Saisissez la clé privée pour JWT ou générez une nouvelle clé.
- Clé publique: Saisissez la clé publique pour JWT ou générez une nouvelle clé.
- Cliquez sur Enregistrer la configuration .
- Vous avez configuré avec succès la méthode d’authentification JWT.
- Tout d'abord, nous devons effectuer un appel API pour obtenir un jeton JWT. Nous utiliserons ensuite ce jeton pour authentifier l'API Drupal afin de créer un utilisateur.
- Nous pouvons obtenir le JWT en envoyant une requête POST contenant le nom d'utilisateur et le mot de passe Drupal de l'utilisateur. Vous devez envoyer le nom d'utilisateur et le mot de passe au format base64. Vous pouvez vous référer au format de requête ci-dessous pour référence.
Pour JWT externe :
Générer des clés personnalisées :
À noter: Vous pouvez saisir les clés manuellement ou les générer. Ces clés serviront à signer et vérifier les jetons JWT.
À noter: Utilisez l’en-tête unique spécifique à l’application lors de l’authentification de l’API.
Demande : POST /rest_api/id_token En-tête : Accepter : application/json Autorisation : Encodé en base64 de base Format de requête CURL - curl --location --request POST ' /rest_api/id_token' \ --header 'Accepter : application/json' \ --header 'Type de contenu : application/json' \ --header 'Autorisation : encodage de base en base64 '
- Une réponse réussie renvoie le JWT avec l'expiration de son jeton. (veuillez vous référer à l'image ci-dessous)
2. Exemple:
- Pour une meilleure compréhension, examinons un exemple d'utilisation du jeton JWT pour créer un utilisateur dans Drupal avec l'API REST.
- Pour créer un utilisateur dans Drupal, vous devez effectuer une requête POST en utilisant le jeton JWT reçu ou le jeton JWT externe comme jeton porteur dans l'en-tête d'autorisation. Consultez l'exemple ci-dessous pour effectuer l'appel.
À noter: L'API /entity/user dans Drupal est utilisée pour créer un nouvel utilisateur.
Format de requête HTML - Requête : POST /entity/user?_format=json En-tête : AUTH-METHOD : application_id Accepter : application/json Type de contenu : application/json Autorisation : Porteur received_JWT Corps : { "name": { "value": " " }, "mail": { "valeur": " " }, "pass": { "valeur": " " }, "status": { "value": "1" } } Format de requête CURL - curl --location --request POST ' /entity/user?_format=json' \ --header 'AUTH-METHOD: application_id' \ --header 'Accept: application/json' \ --header 'Content-Type: application/json' \ --header 'Authorization: Authorization: Bearer ' \ --data-raw ' { "name": [ { "value": "Nom d'utilisateur" } ], "mail": [ { "value": "email" } ], "pass": [ { "value": "Mot de passe" } ], "status": [ { "value": "1" } ] }
- Une réponse réussie renverra les détails de l'utilisateur que vous avez créé (voir l'image ci-dessous).
Félicitations ! Vous avez correctement configuré la méthode d'authentification JWT à l'aide du module d'authentification de l'API Drupal.
Si la configuration n'a pas réussi, veuillez nous contacter à drupalsupport@xecurify.comVeuillez inclure une capture d'écran de la fenêtre d'erreur et nous vous aiderons à résoudre le problème et vous guiderons tout au long de la configuration.
Merci pour votre réponse. Nous reviendrons vers vous bientôt.
Quelque chose s'est mal passé. Veuillez soumettre à nouveau votre requête
