Résultats de recherche :

×

S'inscrire Contactez-Nous

Guide pour sécuriser les API REST pour WordPress avec authentification de base

L'authentification de base pour les API REST de WordPress sécurise l'accès aux points de terminaison WordPress en validant les requêtes API à l'aide d'un jeton généré à partir d'un nom d'utilisateur et d'un mot de passe ou d'identifiants client. Cette méthode d'authentification confirme l'identité de l'utilisateur lors de ses interactions avec le service web, garantissant ainsi que seuls les utilisateurs autorisés peuvent accéder à l'API REST de WordPress.



L'extension Basic Auth pour WordPress sécurise les API REST grâce à l'authentification de base. Avec cette méthode, chaque requête API envoie des identifiants (nom d'utilisateur ou adresse e-mail et mot de passe) encodés en base64, garantissant ainsi une communication sécurisée entre votre site WordPress et les applications externes.


Extension d'authentification API REST pour WordPress

Image

L'extension d'authentification REST API pour WordPress protège vos API REST contre les accès non autorisés. Elle propose plusieurs méthodes d'authentification : authentification de base, authentification par clé API, OAuth 2.0 et authentification JWT.

Savoir Plus   


Pour configurer l'authentification de base de l'API WordPress, vous devez installer une extension d'authentification REST API pour WordPress . Cette extension permet à l'API REST de WordPress d'accepter les identifiants d'authentification de base pour un accès sécurisé.


Guide étape par étape:


  • Étape 1 : Installer le plugin Recherchez « REST API Authentication for WP » dans le répertoire des extensions WordPress et installez-la. Cette extension activera l’authentification de base via l’API REST sur votre site.
  • Étape 2 : activer le plugin - Une fois installé, activez le plugin depuis votre tableau de bord WordPress en allant dans Extensions → Extensions installées et en cliquant sur « Activer » à côté du plugin REST API Authentication.
  • Étape 3 : Configurer l’authentification Ouvrez les paramètres du plugin et suivez les étapes pour configurer l'authentification de base pour votre API REST. Accédez à la page de configuration du plugin pour définir votre méthode d'authentification.


1. Utilisation d'un nom d'utilisateur et d'un mot de passe pour une interaction sécurisée avec l'API REST de WordPress


Si vous développez une application Android ou iOS permettant aux utilisateurs de publier leurs propres flux ou blogs, il est crucial de garantir des interactions sécurisées et authentifiées avec l'API REST pour WordPress.

Comment gérer en toute sécurité l’authentification des utilisateurs :

  • Utilisez l'authentification de base pour WordPress : Implémentez les API REST d'authentification de base pour WordPress avec les identifiants et mots de passe des utilisateurs. Cette méthode garantit l'authentification sécurisée des requêtes effectuées via votre application.
  • Authentifier les demandes des utilisateurs : Lorsqu'un utilisateur se connecte à votre application, une session est créée et les informations d'identification de l'utilisateur sont envoyées sous forme chiffrée dans l'en-tête d'autorisation de base.
  • Gérer les autorisations: En fonction des autorisations WordPress de l'utilisateur, l'API REST détermine les actions qu'il est autorisé à effectuer et le contenu auquel il peut accéder. Cela permet de contrôler les droits d'accès des utilisateurs et de garantir la sécurité des interactions avec votre site WordPress.

En utilisant l'authentification de base pour WordPress avec les identifiants des utilisateurs, vous garantissez que les actions de chaque utilisateur sont correctement authentifiées et autorisées, offrant ainsi un environnement sécurisé pour le contenu généré par les utilisateurs.


Méthode d'authentification de base pour l'API REST WordPress utilisant les identifiants utilisateur

2. Utilisation des identifiants client pour une interaction sécurisée avec l'API REST de WordPress


Si vous possédez une application Android ou iOS et que vous devez interagir avec le contenu WordPress via son API REST, il est essentiel de protéger votre site contre les accès non autorisés. Au lieu d'utiliser directement les identifiants utilisateur WordPress, ce qui peut s'avérer risqué, il est recommandé d'opter pour l'authentification de base WordPress avec des identifiants client.

Voici comment utiliser en toute sécurité les informations d’identification du client :

  • Obtenir l'ID client et le secret client : Au lieu d’exposer les informations d’identification de l’utilisateur WordPress, générez un ID client et un secret client pour votre application.
  • Envoyer des demandes sécurisées : Lors de vos demandes d'API, incluez l'ID client et le secret client. Ces informations d'identification sont transmises dans un format chiffré dans l'en-tête d'autorisation de base.
  • Validation et accès : Une fois que l'API REST pour WordPress reçoit votre requête, elle valide les informations d'identification du client. Si la validation réussit, vous accédez aux points de terminaison de l'API dont vous avez besoin, tout en préservant la sécurité de votre site.

En utilisant les informations d'identification du client, vous vous assurez que vos informations d'utilisateur WordPress restent protégées tout en permettant à votre application d'interagir efficacement avec votre site WordPress.


Méthode d'authentification de base de l'API REST pour WordPress utilisant les identifiants du client

Utilisation de l'authentification de base avec l'API REST : nom d'utilisateur et mot de passe


  • Dans le plugin, allez dans le Configurer les méthodes onglet dans la section de gauche.
  • Cliquez sur L'authentification de base comme méthode d'authentification API.
  • Méthode d'authentification de base pour l'API REST WordPress utilisant un nom d'utilisateur et un mot de passe
  • Sélectionner Nom d'utilisateur et mot de passe avec encodage Base64 et cliquez sur Suivant dans le coin supérieur droit.
  • Méthode d'authentification de base pour l'API REST WordPress utilisant un nom d'utilisateur et un mot de passe
  • Afin de tester la fonctionnalité, remplissez les champs nom d'utilisateur et mot de passe pour un utilisateur existant.
  • Méthode d'authentification de base pour l'API REST WordPress utilisant un nom d'utilisateur et un mot de passe
  • Vous pouvez modifier le point de terminaison de l'API REST pour récupérer les détails de ce point de terminaison. Exemple : le point de terminaison /pages a été sélectionné ici :
  • Cliquez sur le Configuration du test et vérifiez le résultat affiché à l'écran.
  • Cliquez sur Finition .
  • Méthode d'authentification de base pour l'API REST WordPress utilisant un nom d'utilisateur et un mot de passe

Authentification de base de l'API REST à l'aide de l'ID client et du secret client :


  • Dans le plugin, allez sur Configurer l'authentification API onglet et cliquez sur Authentification de base comme méthode d'authentification API.
  • Maintenant, sélectionnez le ID client : Client-Secret comme type de clé d'authentification de base et choisissez l'une des méthodes de chiffrement disponibles en fonction de la manière dont vous souhaitez encoder les informations d'identification de l'utilisateur. HMAC est le plus sécurisé d'entre eux et celui recommandé.
  • Enfin, cliquez sur Enregistrer la configuration L'authentification de base via les API REST pour WordPress sera donc activée.
  • Méthode d'authentification de base pour l'API REST WordPress utilisant l'identifiant client et le secret client
  • Après avoir enregistré la configuration d'authentification de base de l'API REST, pour accéder aux API REST de WordPress, vous devez envoyer une requête API REST avec votre clé d'autorisation respective. Vous devez utiliser le format de requête indiqué ci-dessous.
  •   Request:  GET https://<domain-name>/wp-json/wp/v2/posts
      Header: Authorization: Basic base64encoded <client-id:client-secret>
    Sample Request Format- Example => Client ID : pSYQsKqTndNVpNKcnoZd and Client Secret : SrYPTViHdCbvkWyTfWrSltavTMeJjaOHCye
    
      Sample curl Request Format-
      curl -H "Authorization:Basic base64encoded <clientid:clientsecret>"
      -X POST http://<wp_base_url>/wp-json/wp/v2/users
      -d"username=test&email=test@test.com&password=test&name=test" 
      
  • La fonction PHP base64_encode(string) pour l'encodage base64 peut être utilisée comme suit :
  •         
       base64_encode(‘pSYQsKqTndNVpNKcnoZd:SrYPTViHdCbvkWyTfWrSltavTMeJjaOHCye’) will results into 
      ‘cFNZUXNLcV RuZE5WcE5LY25vWmQ6U3JZUFRWaUhkQ2J2a1d5VGZXclNsdGF2VE1lSmphT0hDeWU=’ as output.
    Sample request: GET https://<domain-name>/wp-json/wp/v2/posts  Header: Authorization :Basic eGw2UllOdFN6WmxKOlNMRWcwS1ZYdFVrbm5XbVV2cG9RVFNLZw==
  • Jetez un coup d'œil au Réponse d'erreur pour l'authentification de base à l'aide de l'ID client et du secret client.
  • Jetez un coup d'œil au documentation développeur pour plus de détails.


 
  var client = new RestClient("http://<wp_base_url>/wp-json/wp/v2/posts ");
  client.Timeout = -1;
  var request = new RestRequest(Method.POST);
  request.AlwaysMultipartFormData = true;
  request.AddParameter("title", "Sample Post");
  request.AddParameter("status", "publish");
  IRestResponse response = client.Execute(request);
  Console.WriteLine(response.Content);
  
 
  OkHttpClient client  = new OkHttpClient().newBuilder().build();
  MediaType mediaType = MediaType.parse("text/plain");
  RequestBody body  = new MultipartBody.Builder().setType(MultipartBody.FORM)
  .addFormDataPart("title","Sample Post")
  .addFormDataPart("status", "publish") 
  .build();
  Request request  = new Request.Builder()
  .url("http://<wp_base_url>/wp-json/wp/v2/posts ")
  .method("POST", body)
   .build();
  Response responseclient.newCall(request).execute();
  
 
  var form = new FormData();
  form.append("title","Sample Post");
  form.append("status", "publish"); 
  
  var settings  = {
  "url": "http://<wp_base_url>/wp-json/wp/v2/posts ",
  "method": "POST",
  "timeout": 0,
  "processData": false,
  "mimeType": "multipart/form-data",
  "contentType": false,
  "data": form
  };
  
  $.ajax(settings).done(function (response)  {
  console.log(response);
  });
  
 
  <?php
   $curl = curl_init();
  curl_setopt_array($curl, array 
  (
  CURLOPT_URL => 'http://%3Cwp_base_url%3E/wp-json/wp/v2/posts%20',
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => '',
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => 'POST',
  CURLOPT_POSTFIELDS => array('title' => 'Sample Post','status' => 'publish'),
  ));
  
  $response = curl_exec($curl);
  curl_close($curl);    
  echo $response;
  
 
  import http.client
  import mimetypes
  from codecs import encode
  
  conn   = http.client.HTTPSConnection("<wp_base_url>")
  dataList= []
  boundary = 'wL36Yn8afVp8Ag7AmP8qZ0SA4n1v9T'
  dataList.append(encode('--' + boundary))
  dataList.append(encode('Content-Disposition: form-data; name=title;')) 
  
  dataList.append(encode('Content-Type: {}'.format('text/plain')))    
  dataList.append(encode(''))    
  
  dataList.append(encode("Sample Post"))
  dataList.append(encode('--' + boundary))    
  dataList.append(encode('Content-Disposition: form-data; name=status;'))    
  
  dataList.append('Content-Type: {}'.format('text/plain')))
  dataList.append(encode(''))    
  
  dataList.append(encode("publish")) 
  dataList.append(encode('--'+boundary+'--'))    
  dataList.append(encode(''))    
  body  = b'\r\n'.join(dataList)    
  payload= body
  headers = {
  'Content-type': 'multipart/form-data; boundary={}'.format(boundary) 
  }
  conn.request("POST", "/wp-json/wp/v2/posts ", payload, headers)
  res= conn.getresponse()    
  data = res.read()    
  print (data.decode("utf-8"))   
  
 
  var client = new RestClient("http://<wp_base_url>/wp-json/wp/v2/posts ");
  client.Timeout = -1;
  var request = new RestRequest(Method.POST);
  request.AddHeader("Authorization", "Basic base64encoded < clientid:clientsecret > ");
  request.AlwaysMultipartFormData = true;
  request.AddParameter("username", "test");
  request.AddParameter("email", "test@test.com");
  request.AddParameter("password", "test");
  request.AddParameter("name", "test");
  IRestResponse response = client.Execute(request);
  Console.WriteLine(response.Content);
  
 
  OkHttpClient client  = new OkHttpClient().newBuilder().build();
  MediaType mediaType = MediaType.parse("text/plain");
  RequestBody body  = new MultipartBody.Builder().setType(MultipartBody.FORM)
  .addFormDataPart("username","test")
  .addFormDataPart("email","test@test.com")
  .addFormDataPart("password","test")
  .addFormDataPart("name","test") 
  .build();
  Request request  = new Request.Builder()
  .url("http://<wp_base_url>/wp-json/wp/v2/posts ")
  .method("POST", body)
  .addHeader ("Authorization", "Basic base64encoded < clientid:clientsecret > ")
   .build();
  Response responseclient.newCall(request).execute();
  
 
  var form = new FormData();
  form.append("username", "test");
  form.append("email", "test@test.com");
  form.append("password", "test");
  form.append("name", "test");
  
  var settings  = {
  "url": "http://<wp_base_url>/wp-json/wp/v2/posts ",
  "method": "POST",
  "timeout": 0,
  "headers": {
  "Authorization": "Basic base64encoded < clientid:clientsecret > "
  },
  "processData": false,
  "mimeType": "multipart/form-data",
  "contentType": false,
  "data": form
  };
  
  $.ajax(settings).done(function (response)  {
  console.log(response);
  });
  
 
  <?php
   $curl = curl_init();
  curl_setopt_array($curl, array 
  ( 
  CURLOPT_URL => 'http://%3Cwp_base_url%3E/wp-json/wp/v2/users',
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => '',
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => 'POST',
  CURLOPT_POSTFIELDS => array('username' => 'test','email' => 'test@test.com','password' => 'test','name' => 'test'),
  CURLOPT_HTTPHEADER => array(
  'Authorization: Basic base64encoded < clientid:clientsecret > '
  ),
  ))  
  $response = curl_exec($curl);
  curl_close($curl);    
  echo $response;
  
 
  import http.client
  import mimetypes
  from codecs import encode
  
  conn   = http.client.HTTPSConnection("<wp_base_url>")
  dataList= []
  boundary = 'wL36Yn8afVp8Ag7AmP8qZ0SA4n1v9T'
  dataList.append(encode('--' + boundary))
  dataList.append(encode('Content-Disposition: form-data; name=username;'))
  
  dataList.append(encode('Content-Type: {}'.format('text/plain')))    
  dataList.append(encode(''))    
  
  dataList.append(encode("test"))
  dataList.append(encode('--' + boundary))    
  dataList.append(encode('Content-Disposition: form-data; name=email;'))
  
  dataList.append('Content-Type: {}'.format('text/plain')))
  dataList.append(encode(''))    
  
  dataList.append(encode("test@test.com"))
  dataList.append(encode('--'+ boundary))    
  dataList.append(encode('Content-Disposition: form-data; name=password;'))
  
  dataList.append(encode('Content-Type: {}'.format('text/plain')))
  dataList.append(encode(''))
  
  dataList.append(encode("test"))
  dataList.append(encode('--' + boundary))
  
  dataList.append(encode('Content-Disposition: form-data; name=name;'))
  
  dataList.append(encode('Content-Type: {}'.format('text/plain')))
  dataList.append(encode(''))
  
  dataList.append(encode("test"))
  dataList.append(encode('--'+boundary+'--'))
  dataList.append(encode(''))
  body  = b'\r\n'.join(dataList)    
  payload= body
  headers = {
  'Authorization': 'Basic base64encoded < clientid:clientsecret > ',
  'Content-type': 'multipart/form-data; boundary={}'.format(boundary) 
  }
  conn.request("POST", "/wp-json/wp/v2/posts ", payload, headers)
  res= conn.getresponse()    
  data = res.read()    
  print (data.decode("utf-8"))   
  


    Suivez les étapes ci-dessous pour effectuer une requête API REST à l'aide de Postman :

  • Cliquez sur le Échantillons de facteur onglet dans le plugin.
  • Méthode d'authentification de base pour l'implémentation de Postman dans une API REST
  • Maintenant, survolez la carte Basic Authentication Postman Samples.
      • Méthode d'authentification de base pour l'API REST (fichier JSON Postman pour nom d'utilisateur et mot de passe) pour WordPress.
      • Importez le fichier téléchargé Fichier JSON dans l'application Postman comme indiqué ci-dessous.
      • Méthode d'authentification de base pour l'API REST lors de l'importation d'un fichier JSON via Postman WordPress.
      • Une fois que vous avez importé le fichier json, cliquez sur la demande d'API REST sous les collections comme indiqué dans la dernière figure. Remplacez le avec votre domaine Wordpress dans le http://<wp_base_url>/wp-json/wp/v2/posts et remplacer le codé en base64 dans l'en-tête avec la valeur codée de base.
        • Exemple :
          Pour le nom d'utilisateur : testuser et le mot de passe : password@123, la valeur codée en base64 sera « dGVzdHVzZXI6cGFzc3dvcmRAMTIz »

      Méthode de clé d'authentification des API REST : remplacement de l'URL de base par Postman
      • Méthode d'authentification de base pour l'API REST avec Postman (fichier JSON) contenant l'identifiant et le secret du client.
      • Importez le fichier téléchargé Fichier JSON dans l'application Postman comme indiqué ci-dessous.
      • Méthode d'authentification de base pour l'API REST lors de l'importation d'un fichier JSON via Postman WordPress.
      • Une fois que vous avez importé le fichier json, cliquez sur la demande d'API REST sous les collections comme indiqué dans la dernière figure. Remplacez maintenant le avec votre domaine Wordpress dans le http://<wp_base_url>/wp-json/wp/v2/posts et remplacer le codé en base64 dans l'en-tête avec la valeur codée de base.
      • Méthode d'authentification de base pour l'API REST avec Postman (remplacement de l'URL de base)


1. Restriction de l'API REST basée sur les rôles :


Cette fonctionnalité restreint l'accès à l'API REST de WordPress en fonction des rôles des utilisateurs. Vous pouvez autoriser certains rôles à accéder à certaines ressources de l'API REST. Lors d'une requête API REST, le rôle de l'utilisateur est vérifié et l'accès est accordé uniquement si ce rôle figure sur la liste blanche.


Comment configurer la restriction de l'API REST basée sur les rôles dans WordPress ?

  • Accéder au plugin Paramètres avancés languette.
  • Dans l' Restriction basée sur les rôles section, tous les rôles sont autorisés à accéder aux API par défaut.
  • Cochez la case en regard des rôles dont vous souhaitez restreindre l’accès aux API.
  • Méthode d'authentification de base pour l'implémentation de Postman dans une API REST
  • Dans l'image ci-dessus, la case à cocher du rôle d'abonné est activée. Ainsi, chaque fois qu'une demande d'API est effectuée par l'utilisateur, avec son rôle d'abonné, cet utilisateur ne sera pas autorisé à accéder à la ressource demandée.

Remarque : La fonctionnalité de restriction basée sur les rôles est valable pour l’authentification de base (nom d’utilisateur : mot de passe), la méthode JWT et OAuth 2.0 (autorisation par mot de passe).


2. En-tête personnalisé :


La fonctionnalité d'en-tête personnalisé vous permet d'utiliser un en-tête personnalisé à la place de l'en-tête « Authorization » par défaut. Cela renforce la sécurité, car l'API REST n'acceptera que les requêtes comportant l'en-tête personnalisé que vous avez défini. Toute tentative d'envoi d'une requête avec l'en-tête « Authorization » par défaut sera refusée.


Comment configurer un en-tête personnalisé pour l'authentification de l'API REST pour WordPress ?

  • Accéder au plugin Paramètres avancés languette.
  • Dans l' En-tête personnalisé section, entrez le nom de votre en-tête préféré dans la zone de texte.
  • Enregistrez les modifications pour appliquer le nouvel en-tête personnalisé aux requêtes API.
  • Méthode d'authentification de base pour l'implémentation de Postman dans une API REST

3. Excluez les API REST :


La fonctionnalité « Exclure les API REST » permet d'autoriser l'accès à certains points de terminaison d'API REST sans authentification. Ces API exclues deviennent publiques et accessibles sans jeton ni connexion.


Comment configurer l'API REST exclue dans l'authentification JWT ?

  • Accéder au plugin Paramètres avancés languette.
  • Dans l' Exclure les API REST section, saisissez vos points de terminaison API au format requis.
  • Les API saisies seront exclues de l’authentification et disponibles pour l’accès public.
  • Méthode d'authentification de base pour l'implémentation de Postman dans une API REST
  • Exemple : Supposons que vous souhaitiez exclure l'API REST '/wp-json/wp/v2/posts' puis vous devez saisir '/wp/v2/posts' dans la zone de texte.

4. Activez le cryptage avancé pour les jetons à l'aide de HMAC :


Cette fonctionnalité est disponible avec la méthode d'authentification de base. Par défaut, les jetons sont chiffrés à l'aide de l'encodage Base64, mais l'option avancée permet d'activer le chiffrement HMAC. HMAC offre un niveau de sécurité bien supérieur, garantissant ainsi une protection renforcée des requêtes API contre toute falsification et tout accès non autorisé.


Comment configurer le chiffrement HMAC pour les jetons dans WordPress pour l'authentification de base ?

  • Accéder au plugin Paramètres avancés onglet et ouvrez le Méthode de cryptage des jetons .
  • Sélectionner HMAC au lieu de Base64, puis enregistrez les modifications pour appliquer un cryptage sécurisé à tous les jetons.


Par défaut, l'authentification de base utilise l'encodage Base64, qui n'est pas totalement sécurisé. Cependant, grâce à des extensions comme la nôtre, vous pouvez activer le chiffrement HMAC avancé, ce qui rend les jetons plus sûrs et adaptés à une utilisation en production.

L'authentification de base est idéale pour les tests, le développement ou les applications de petite envergure où la simplicité est primordiale. JWT est recommandé pour les applications plus importantes nécessitant des sessions basées sur des jetons et une bonne scalabilité.

Oui. L'authentification de base peut être utilisée avec les identifiants de l'utilisateur ou les identifiants du client dans les applications mobiles pour valider en toute sécurité les requêtes API.

Si l'authentification de base est désactivée, vos points de terminaison d'API REST ne valideront plus les requêtes. Votre API risque alors d'être vulnérable aux accès non autorisés ; il est donc recommandé de toujours la maintenir activée.

Grâce à la fonctionnalité de restriction basée sur les rôles, vous pouvez spécifier quels rôles WordPress sont autorisés ou non à accéder à vos points de terminaison d'API REST.



 Merci pour votre réponse. Nous reviendrons vers vous bientôt.

Quelque chose s'est mal passé. Veuillez soumettre à nouveau votre requête

Nous vous contacterons dans les plus brefs délais !


Besoin d'aide?

Envoyez-nous un e-mail à apisupport@xecurify.com pour obtenir rapidement des conseils (par e-mail ou en réunion) sur vos besoins et notre équipe vous aidera à sélectionner la solution/le forfait le mieux adapté à vos exigences.


ADFS_sso ×
Bonjour!

Besoin d'aide? Nous sommes ici !

soutenez