Authentification REST API utilisant un fournisseur d’identité externe
Si vous souhaitez protéger/restreindre l’accès à vos API REST Drupal en utilisant votre fournisseur d’identité, alors vous devriez opter pour la méthode d’authentification via un fournisseur d’identité externe.
L’authentification des API Drupal via un fournisseur d’identité externe implique l’utilisation de jetons reçus de fournisseurs tiers comme Google, Azure AD, Keycloak, Okta, Gitlab, etc., pour accéder de manière sécurisée aux API REST de Drupal.
Avec cette méthode, vous devez configurer le module avec le point de terminaison User Info fourni par votre fournisseur d’identité ainsi que l’attribut du nom d’utilisateur de ce dernier, ce qui vous permettra d’authentifier toutes les requêtes API Drupal à l’aide du jeton fourni par votre fournisseur. Le module Drupal REST API vérifie les informations d’utilisateur reçues par rapport au compte utilisateur Drupal. Ce module est compatible avec Drupal 7, Drupal 8, Drupal 9, Drupal 10 et Drupal 11.
Vidéo d’installation :
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 Web Services suivants dans la section Extension (/admin/modules) de votre site Drupal :
- REST UI
- RESTful Web Services
- Sérialisation
Étapes pour configurer l’authentification API avec un fournisseur d’application/fournisseur d’identité externe :
- Pour mieux comprendre, nous prendrons l’exemple d’ajouter une authentification basée sur un fournisseur d’identité externe à l’API de création d’utilisateur dans Drupal.
- Notez que l’API
/entity/user
de Drupal est utilisée pour créer un utilisateur dans Drupal.
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 spécifique. Cela peut être fait avec le module REST UI ou en modifiant directement la configuration.
- Pour activer l’API avec le module REST UI, cliquez sur le bouton Configurer du module REST UI (comme montré ci-dessous)
- Dans notre exemple, nous devons activer l’API /entity/user présente sous Utilisateur. Activez cette API en cliquant sur l’option Activer devant elle.
- Maintenant, comme notre but 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. Cliquez sur le bouton Enregistrer la configuration pour continuer.
Configuration du module Drupal REST API Authentication :
- Dans cette étape, nous allons configurer le Fournisseur d’identité externe comme méthode d’authentification API. Pour ce faire, naviguez dans l’onglet Authentification API du module REST API Authentication (/admin/config/people/rest_api_authentication/auth_settings)
- Cochez la case Activer l’authentification et cliquez sur Enregistrer les paramètres.
- Sous le bouton Enregistrer les paramètres, sélectionnez le bouton radio Fournisseur d’identité externe.
- Dans le champ de texte User Info Endpoint, entrez l’URL du point de terminaison d’informations utilisateur fourni par votre fournisseur d’identité afin que le module puisse récupérer les informations utilisateur via le jeton fourni.
- Dans le champ Attribut du nom d’utilisateur, entrez la clé/nom de l’attribut utilisé par votre fournisseur d’identité externe pour transmettre le nom d’utilisateur.
Attribuer aux rôles Drupal la permission de créer un utilisateur dans Drupal :
- Si nécessaire, vous pouvez également accorder aux rôles Drupal non administrateurs la permission de créer un utilisateur dans Drupal. Vous pouvez le faire en attribuant la permission Administrer les utilisateurs aux rôles Drupal depuis la section permissions (/admin/people/permissions) de votre site Drupal.
Voilà, c’est terminé !!!
- Essayons maintenant de créer un utilisateur dans Drupal via un appel API en utilisant un fournisseur d’identité externe pour l’authentification.
Exemples :
- Pour créer un utilisateur dans Drupal, vous devez effectuer une requête POST avec le jeton reçu de votre fournisseur d’identité.
Requête : POST <votre_url_base_drupal>/entity/user?_format=json
En-tête : Token : <Jeton_reçu_du_fournisseur_d’identité_externe>
Accept : application/json
Content-Type : application/jsonCorps : {
"name": [
{"value": "<nom_utilisateur>"}
],
"mail": [
{"value": "<email>"}
],
"pass": [
{"value": "<mot_de_passe>"}
],
"status": [
{"value": "1"}
]
}Format de 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 'Token: <Jeton_reçu_du_fournisseur_d’identité_externe>' \
--data-raw '{
"name": [
{"value": "NomUtilisateur"}
],
"mail": [
{"value": "email"}
],
"pass": [
{"value": "MotDePasse"}
],
"status": [
{"value": "1"}
]
}'
- Vous pouvez aussi vous référer à l’image de la requête Postman ajoutée ci-dessous :
- Une réponse réussie retourne les informations de l’utilisateur que vous avez créé. (voir l’image ci-dessous)
- Si vous recevez une erreur en réponse, vous pouvez vous référer au tableau ci-dessous pour la description de l’erreur et les solutions possibles.
Réponses d’erreur :
Erreur | Description |
INVALID_USER_INFO_ENDPOINT | Cette erreur survient lorsque vous fournissez une URL incorrecte du point de terminaison d’information utilisateur dans la configuration du module. |
INVALID_USERNAME_ATTRIBUTE | Cette erreur survient lorsque vous fournissez un attribut de nom d’utilisateur incorrect dans la configuration du module ou s’il y a une erreur lors de la récupération du nom d’utilisateur. |
INVALID_TOKEN | Cette erreur survient lorsque le jeton fourni est incorrect ou manquant dans l’en-tête. |
Article tiré de la documentation Drupal.