Le plugin d’authentification WordPress REST API fournit la sécurité contre tout accès non autorisé à vos API WordPress REST.
Résultats de recherche :
×L'authentification de base de l'API WordPress REST vous permet de vérifier l'accès aux API WordPress REST en validant un jeton API généré à partir du nom d'utilisateur, du mot de passe ou des informations d'identification du client.
Chaque fois qu'une demande est faite pour accéder à un point de terminaison de l'API REST WordPress, elle subit une authentification par rapport au jeton associé. Par la suite, l'accès aux ressources pour cette requête API spécifique est déterminé sur la base de la validation réussie de ce jeton API. Pour maintenir la sécurité, le jeton d'accès est crypté pour éviter toute violation de sécurité/données.
Le plugin d’authentification WordPress REST API fournit la sécurité contre tout accès non autorisé à vos API WordPress REST.
1. Basé sur les informations d'identification de l'utilisateur :
Supposons que vous disposiez d'une application Android/iOS et que vous ayez donné à vos utilisateurs la possibilité de publier leurs flux personnels ou leurs blogs sur l'application mobile.
Dans ce cas, les requêtes sur votre application mobile doivent être authentifiées.
L’API REST d’authentification de base WordPress avec nom d’utilisateur et mot de passe est la meilleure méthode d’authentification dans ce cas. Il sera utile d'effectuer des opérations WordPress via des API REST qui impliquent des autorisations ou des capacités utilisateur.
La session utilisateur sera créée et, sur la base de ses capacités WordPress, il sera autorisé à accéder au contenu de l'API REST ou à effectuer les opérations souhaitées.
2. Basé sur les informations d'identification du client :
Imaginez que vous disposez d'une application Android ou iOS et que vous souhaitez interagir avec le contenu WordPress via ses points de terminaison de l'API REST. Cependant, vous êtes réticent à utiliser les informations d'identification de l'utilisateur WP pour empêcher toute exposition potentielle qui pourrait permettre à un intrus d'accéder sans autorisation au site WP.
Dans un tel scénario, il est conseillé d'utiliser l'API WordPress Basic Authentication Rest, en utilisant un identifiant client et un secret client pour protéger vos informations d'identification utilisateur WP.
Avec cette méthode, il vous suffit d'inclure l'ID client et le secret client fournis par le plugin dans chaque requête. Par conséquent, la sécurité reste sans compromis, car l'ID client et le secret sont transmis dans un format crypté dans l'en-tête Basic Authorization de chaque demande d'API. Ces informations d'identification sont ensuite validées et, une fois la validation réussie, WP API Basic Auth accorde l'accès aux API demandées.
Authentification de base de l'API REST à l'aide du nom d'utilisateur et du mot de passe :
Authentification de base de l'API REST à l'aide de l'ID client et du secret client :
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"
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==
Authentification de base de l'API REST à l'aide du nom d'utilisateur et du mot de passe :
Request: GET https://<domain-name>/wp-json/wp/v2/posts
Header: Authorization: Basic base64encoded <username:password>
Sample Request Format-
Example => username : testuser and password : password@123
Sample curl Request Format-
curl -H "Authorization:Basic base64encoded <username:password>"
-X POST http://<wp_base_url>/wp-json/wp/v2/posts -d "title=sample post&status=publish"
base64_encode(‘testuser:password@123’) will results into ‘eGw2UllOdFN6WmxKOlNMRWcwS1ZYdFVrbm5XbVV2cG9RV FNLZw==’ as output.
Sample request: GET https://<domain-name>/wp-json/wp/v2/posts
Header: Authorization : Basic eGw2UllOdFN6WmxKOlNMRWcwS1ZYdFVrbm5XbVV2cG9RVFNLZw==
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 :
a) Pour le nom d'utilisateur et le mot de passe
Mise en situation :
Pour le nom d'utilisateur : testuser et le mot de passe : password@123, la valeur codée en base64 sera "dGVzdHVzZXI6cGFzc3dvcmRAMTIz".
b) Pour l'ID client et le secret client
Cette fonctionnalité vous permet de restreindre l'accès à l'API REST en fonction des rôles des utilisateurs. Vous avez la possibilité de spécifier les rôles autorisés à accéder à la ressource demandée via les API REST. Par conséquent, lorsqu'un utilisateur fait une requête API REST, son rôle est vérifié et l'accès à la ressource est accordé exclusivement si son rôle est inclus dans la liste blanche.
Comment le configurer ?
Remarque: La fonctionnalité de restriction basée sur les rôles est valide pour l'authentification de base (nom d'utilisateur : mot de passe), la méthode JWT et OAuth 2.0 (octroi de mot de passe).
Cette fonctionnalité offre la possibilité de sélectionner un en-tête personnalisé au lieu de celui par défaut 'Autorisation' entête. Cela améliore la sécurité en vous permettant de nommer l'en-tête selon vos préférences personnalisées. Par conséquent, si quelqu'un tente de faire une requête API REST avec un en-tête nommé 'Autorisation,' ils seront autorisés à accéder aux API.
Comment le configurer ?
Cette fonctionnalité vous permet de désigner certaines API REST comme sur liste blanche, ce qui permet d'y accéder directement sans avoir besoin d'authentification. Par conséquent, toutes ces API REST sur liste blanche deviennent accessibles au public.
Comment le configurer ?
Cette fonctionnalité est proposée dans la méthode d'authentification de base, où le jeton est généralement chiffré à l'aide du codage Base64 par défaut. Cependant, avec l’option avancée, le token peut être crypté à l’aide de la méthode de cryptage hautement sécurisée HMAC, qui garantit un très haut niveau de sécurité.
Envoyez-nous un e-mail oauthsupport@xecurify.com pour des conseils rapides (par e-mail/réunion) sur vos besoins et notre équipe vous aidera à sélectionner la solution/le plan le mieux adapté à vos besoins.
Besoin d'aide? Nous sommes ici !
Merci pour votre demande.
Si vous n'avez pas de nouvelles de nous dans les 24 heures, n'hésitez pas à envoyer un e-mail de suivi à info@xecurify.com
Cette déclaration de confidentialité s'applique aux sites Web miniorange décrivant la manière dont nous traitons les informations personnelles. Lorsque vous visitez un site Web, celui-ci peut stocker ou récupérer des informations sur votre navigateur, principalement sous la forme de cookies. Ces informations peuvent concerner vous, vos préférences ou votre appareil et sont principalement utilisées pour que le site fonctionne comme vous le souhaitez. Les informations ne vous identifient pas directement, mais elles peuvent vous offrir une expérience Web plus personnalisée. Cliquez sur les titres des catégories pour vérifier comment nous traitons les cookies. Pour la déclaration de confidentialité de nos solutions, vous pouvez vous référer au Politique de confidentialité.
Les cookies nécessaires contribuent à rendre un site Web pleinement utilisable en activant les fonctions de base telles que la navigation sur le site, la connexion, le remplissage de formulaires, etc. Les cookies utilisés pour la fonctionnalité ne stockent aucune information personnelle identifiable. Cependant, certaines parties du site Web ne fonctionneront pas correctement sans les cookies.
Ces cookies collectent uniquement des informations agrégées sur le trafic du site Web, notamment les visiteurs, les sources, les clics et les vues des pages, etc. Cela nous permet d'en savoir plus sur nos pages les plus et les moins populaires ainsi que sur l'interaction des utilisateurs sur les éléments exploitables et ainsi de permettre nous améliorons les performances de notre site Web ainsi que de nos services.