El complemento de autenticación de API REST de WordPress brinda seguridad contra el acceso no autorizado a sus API REST de WordPress.
Resultados de la búsqueda :
×La autenticación básica de la API REST de WordPress le permite verificar el acceso a las API REST de WordPress validando un token de API generado a partir del nombre de usuario, la contraseña o las credenciales del cliente.
Cada vez que se realiza una solicitud para acceder a un punto final de la API REST de WordPress, se realiza una autenticación con el token asociado. Posteriormente, el acceso a los recursos para esa solicitud de API específica se determina en función de la validación exitosa de este token de API. Para mantener la seguridad, el token de acceso está cifrado para evitar violaciones de seguridad/datos.
El complemento de autenticación de API REST de WordPress brinda seguridad contra el acceso no autorizado a sus API REST de WordPress.
1. Según las credenciales del usuario:
Suponga que tiene una aplicación para Android/iOS y les ha brindado a sus usuarios la función de publicar sus feeds personales o blogs en la aplicación móvil.
En este caso, las solicitudes en su aplicación móvil deben estar autenticadas.
La API REST de autenticación básica de WordPress con nombre de usuario y contraseña es el mejor método de autenticación para este caso. Será útil realizar operaciones de WordPress a través de API REST que impliquen permisos o capacidades de usuario.
Se creará la sesión del usuario y, en función de sus capacidades de WordPress, se le permitirá acceder al contenido de la API REST o realizar las operaciones deseadas.
2. Basado en las Credenciales del Cliente:
Imagine que tiene una aplicación de Android o iOS y desea interactuar con el contenido de WordPress a través de sus puntos finales de API REST. Sin embargo, es reacio a utilizar las credenciales de usuario de WP para evitar cualquier exposición potencial que pueda permitir que un intruso obtenga acceso no autorizado al sitio de WP.
En tal escenario, es recomendable emplear la API Rest de autenticación básica de WordPress, utilizando una ID de cliente y un secreto de cliente para proteger sus credenciales de usuario de WP.
Con este método, solo necesita incluir el ID del cliente y el secreto del cliente proporcionados por el complemento en cada solicitud. En consecuencia, la seguridad no se ve comprometida, ya que el ID del cliente y el secreto se transmiten en un formato cifrado dentro del encabezado de Autorización básica de cada solicitud de API. Luego, estas credenciales se validan y, tras una validación exitosa, WP API Basic Auth otorga acceso a las API solicitadas.
Autenticación básica de API REST mediante nombre de usuario y contraseña:
Autenticación básica de API REST mediante ID de cliente y secreto de cliente:
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==
Autenticación básica de API REST mediante nombre de usuario y contraseña:
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"))
Siga los pasos a continuación para realizar una solicitud de API REST utilizando Postman:
a) Para Nombre de Usuario-Contraseña
Ejemplo:
Para nombre de usuario: usuario de prueba y contraseña: contraseña@123, el valor codificado en base64 será 'dGVzdHVzZXI6cGFzc3dvcmRAMTIz'
b) Para ID de cliente y secreto de cliente
Esta característica le permite restringir el acceso a la API REST de acuerdo con los roles de los usuarios. Tiene la opción de especificar los roles a los que se les permite acceder al recurso solicitado a través de las API REST. En consecuencia, cuando un usuario realiza una solicitud de API REST, se verifica su rol y se otorga acceso al recurso exclusivamente si su rol está incluido en la lista blanca.
¿Cómo configurarlo?
Nota: La función de restricción basada en roles es válida para la autenticación básica (nombre de usuario: contraseña), el método JWT y OAuth 2.0 (concesión de contraseña).
Esta característica ofrece la posibilidad de seleccionar un encabezado personalizado en lugar del predeterminado. 'Autorización' encabezamiento. Esto mejora la seguridad al permitirle nombrar el encabezado según su preferencia personalizada. En consecuencia, si alguien intenta realizar una solicitud de API REST con un encabezado llamado 'Autorización,'se les permitirá acceder a las API.
¿Cómo configurarlo?
Esta característica le permite designar ciertas API REST como incluidas en la lista blanca, lo que permite acceder a ellas directamente sin necesidad de autenticación. En consecuencia, todas estas API REST incluidas en la lista blanca pasan a ser de acceso público.
¿Cómo configurarlo?
Esta característica se ofrece dentro del método de autenticación básica, donde el token generalmente se cifra utilizando la codificación Base64 de forma predeterminada. Sin embargo, con la opción avanzada, el token se puede cifrar utilizando el método de cifrado HMAC altamente seguro, que garantiza un nivel muy alto de seguridad.
Envíenos un correo electrónico a oauthsupport@xecurify.com para obtener orientación rápida (por correo electrónico/reunión) sobre sus necesidades y nuestro equipo le ayudará a seleccionar la mejor solución/plan adecuado según sus necesidades.
¿Necesitas ayuda? ¡Estamos aquí!
Gracias por su consulta.
Si no recibe noticias nuestras dentro de las 24 horas, no dude en enviar un correo electrónico de seguimiento a info@xecurify.com
Esta declaración de privacidad se aplica a los sitios web de miniorange que describen cómo manejamos la información personal. Cuando visita cualquier sitio web, este puede almacenar o recuperar información en su navegador, principalmente en forma de cookies. Esta información puede ser sobre usted, sus preferencias o su dispositivo y se utiliza principalmente para que el sitio funcione como usted espera. La información no lo identifica directamente, pero puede brindarle una experiencia web más personalizada. Haga clic en los encabezados de las categorías para comprobar cómo manejamos las cookies. Para conocer la declaración de privacidad de nuestras soluciones, puede consultar la políticas de privacidad.
Las cookies necesarias ayudan a que un sitio web sea totalmente utilizable al permitir funciones básicas como navegación en el sitio, iniciar sesión, completar formularios, etc. Las cookies utilizadas para la funcionalidad no almacenan ninguna información de identificación personal. Sin embargo, algunas partes del sitio web no funcionarán correctamente sin las cookies.
Estas cookies solo recopilan información agregada sobre el tráfico del sitio web, incluidos visitantes, fuentes, clics y visitas a la página, etc. Esto nos permite saber más sobre nuestras páginas más y menos populares junto con la interacción de los usuarios en los elementos procesables y, por lo tanto, permitirnos mejorar el rendimiento de nuestro sitio web y nuestros servicios.