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 :
×OAuth 2.0 es el método más elegido para autenticar el acceso a las API. OAuth 2.0 permite la autorización sin necesidad de proporcionar la dirección de correo electrónico o la contraseña del usuario a una aplicación externa. Este método de autenticación OAuth 2.0 de la API REST de WordPress implica el uso del flujo del protocolo OAuth 2.0 para obtener el token de acceso de seguridad o token de identificación (token JWT) y ese token se utilizará para autenticar los puntos finales de la API REST de WordPress. Cada vez que se realice una solicitud para acceder al punto final de la API REST de WordPress, la autenticación se realizará contra ese token de acceso/token de identificación (token JWT) y, en función de la verificación de ese token de portador de API, los recursos para esa API. Se permitirá el acceso a la solicitud.
El token proporcionado mediante el método de autenticación OAuth 2.0 está altamente cifrado y es seguro, por lo que la seguridad no se ve comprometida. Es el método más seguro para autenticar/proteger los puntos finales de la API REST de WordPress. Este método es algo similar al método de autenticación JWT pero mucho más seguro debido a los diversos beneficios del protocolo OAuth 2.0.
El complemento de autenticación de API REST de WordPress brinda seguridad contra el acceso no autorizado a sus API REST de WordPress.
Caso de uso: registrar usuarios de WordPress o autenticar/iniciar sesión de usuarios en plataformas externas según las credenciales de WordPress a través de la API REST de WordPress
Supongamos que tiene un formulario de inicio de sesión en su aplicación y desea autenticar al usuario basándose en sus credenciales de inicio de sesión de WordPress, entonces la autenticación OAuth 2.0 en el método REST API lo ayudará a lograrlo. El complemento proporciona una API de inicio de sesión de WordPress. Puede pasar fácilmente las credenciales de WordPress de ese usuario a esta API y, según la validación, recibirá la autenticación y la respuesta.
Además, la implementación de la autenticación OAuth 2.0 en el método API REST también se puede utilizar para registrar usuarios en WordPress utilizando las credenciales de administrador del usuario de WordPress. Al utilizar el punto final del token OAuth 2.0 del complemento, puede pasar credenciales de usuario de WordPress que tienen capacidades de administrador, de modo que el token generado tendrá capacidades de administrador que se pueden usar para realizar operaciones como el registro de usuarios para las cuales se requieren privilegios administrativos. Una vez que tenga el token, puede usarlo con la API de wordPress '/users' para registrar usuarios en WordPress mediante una solicitud de API REST.
Caso de uso: autenticar/proteger los puntos finales de la API REST de WordPress de forma segura o registrar usuarios en WordPress sin utilizar credenciales de usuario administrador.
Si desea acceder a la API REST de WordPress sin pasar las credenciales de usuario de WordPress o desea registrar a los usuarios en WordPress de forma segura sin necesidad de pasar las credenciales de usuario administrador de WordPress y en su lugar pasar las credenciales de cliente proporcionadas por el complemento, entonces este método es el Solución perfecta para que no haya ninguna posibilidad de que las credenciales del usuario se vean comprometidas.
El complemento actúa como proveedor de identidad (servidor) OAuth 2.0 que proporciona el token y el autenticador de API REST para la autenticación de estos puntos finales de la API REST de WordPress en función del token. Por lo tanto, proporciona la máxima seguridad para obtener el token y ese token se puede utilizar para autenticar la solicitud de API REST.
1. La solicitud de la API REST se realizará con los parámetros adecuados para obtener el token de nuestro complemento. Nuestro complemento actuará como proveedor de identidad OAuth 2.0 y proporcionará el token de acceso.
2. La solicitud de API REST real para acceder al recurso se realizará con el token de acceso recibido en el último paso pasado en el encabezado de Autorización con el tipo de token como Portador. El complemento ahora actúa como autenticador para autenticar la API según la validez del token. Si el token se valida correctamente, el solicitante de la API podrá acceder al recurso; de lo contrario, en caso de validación fallida, se devolverá una respuesta de error.
Caso de uso relacionado:
Ahora la parte de configuración del complemento se ha realizado correctamente. A continuación se incluye la parte en la que se obtendrá y utilizará el token JWT/acceso de seguridad real para acceder a las API REST de WordPress.
Request: POST https://<domain-name>/wp-json/api/v1/token
Body:
grant_type =<password>
username =<wordpress username>
password = <wordpress password>
client_id =<client id>
Sample curl Request Format-
curl -d "grant_type=password&username=<wordpress_username>&password=<wordpress_password>&client_id=<client_id>"
-X POST http://<wp_base_url>/wp-json/api/v1/token
Request: POST https://<domain-name>/wp-json/api/v1/token
Body:
grant_type = <refresh_token>
refresh_token = <Refresh Token>
Sample curl Request Format-
curl -d "grant_type=refresh_token&refresh_token=<refresh_token>&client_id=<client_id>&client_secret=<client_secret>"
-X POST http://<wp_base_url>/wp-json/api/v1/token
Request: GET https://<domain-name>/wp-json/wp/v2/posts
Header: Authorization :Bearer <access_token /id_token>
Request: POST https://<domain-name>/wp-json/api/v1/token
Body:
grant_type = <client_credentials>
client_id = <client id>
client_secret = <client secret>
Sample curl Request Format-
curl -d "grant_type=client_credentials&client_id=<client_id>&client_secret=<client_secret>"
-X POST http://<wp_base_url>/wp-json/api/v1/token
Request: POST https://<domain-name>/wp-json/api/v1/token
Body:
grant_type = <refresh_token>
refresh_token = <Refresh Token>
Sample curl Request Format-
curl -d "grant_type=refresh_token&refresh_token=<refresh_token>&client_id=<client_id>&client_secret=<client_secret>"
-X POST http://<wp_base_url>/wp-json/api/v1/token
Request: GET https://<domain-name>/wp-json/wp/v2/posts
Header: Authorization : Bearer <access_token /id_token>
1. Actualizar token -
Puede habilitar esta opción si desea recibir una cadena que sea un token de actualización junto con el token de acceso o el token JWT en la solicitud del punto final del token. Permitirá al usuario acceder a los mismos recursos que se le otorgaron anteriormente. Con el nuevo token creado, el usuario no debería obtener acceso más allá de la concesión original. Los tokens de actualización permiten a los servidores de autorización utilizar períodos de tiempo cortos (vida útil) para los tokens de acceso sin necesidad de involucrar al usuario en el vencimiento del token. Con este token, puede regenerar el token de acceso/token JWT, ya que deben caducar en breve para aumentar la seguridad.
2. Revocar token -
Habilitar esta opción le permite revocar el token de acceso/token JWT existente para hacerlo inválido y, por lo tanto, el token en particular no se puede usar para autenticar las API REST de WP. La API RESTful primero valida las credenciales de la aplicación y si el token se emitió a la aplicación que realiza la solicitud de revocación. En caso de que la validación no sea exitosa, la solicitud particular se rechaza y se muestra un error en la aplicación. La API invalida el token y el token no se puede volver a utilizar después de su revocación. Cada solicitud de revocación invalida los tokens que se emitieron para el mismo tipo de concesión de autorización.
var client = new RestClient("http://<wp_base_url>/wp-json/api/v1/token ");
client.Timeout = -1;
var request = new RestRequest(Method.POST);
request.AlwaysMultipartFormDatatrue;
request.AddParameter("grant_type", "client_credentials");
request.AddParameter("client_id", "<client_id>");
request.AddParameter("client_secret", "<client_secret>");
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("grant_type", "client_credentials");
.addFormDataPart("client_id", "<client_id>");
.addFormDataPart("client_secret", "<client_secret>");
.build();
Request request = new Request.Builder()
.url("http://<wp_base_url>/wp-json/api/v1/token ")
.method("POST", null)
.build();
Response responseclient.newCall(request).execute();
var form = new FormData();
form.append("grant_type", "client_credentials");
form.append("client_id", "<client_id>");
form.append("client_secret", "<client_secret>");
var settings = {
"url": "http://<wp_base_url>/wp-json/api/v1/token ",
"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/api/v1/token',
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('grant_type' => 'client_credentials','client_id' => '<client_id>','client_secret' => '<client_secret>'),
));
$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=grant_type;'))
dataList.append(encode('Content-Type: {}'.format('text/plain')))
dataList.append(encode(''))
dataList.append(encode("client_credentials"))
dataList.append(encode('--' + boundary))
dataList.append(encode('Content-Disposition: form-data; name=client_id;'))
dataList.append('Content-Type: {}'.format('text/plain')))
dataList.append(encode(''))
dataList.append(encode("<client_id>"))
dataList.append(encode('--'+ boundary))
dataList.append(encode('Content-Disposition: form-data; name=client_secret;'))
dataList.append(encode('Content-Type: {}'.format('text/plain')))
dataList.append(encode(''))
dataList.append(encode("<client_secret<"))
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/api/v1/token ", payload, headers)
res= conn.getresponse()
data = res.read()
print (data.decode("utf-8"))
var client = new RestClient("http://<wp_base_url>/wp-json/api/v1/token ");
client.Timeout = -1;
var request = new RestRequest(Method.POST);
request.AlwaysMultipartFormData true;
request.AddParameter("grant_type", "password");
request.AddParameter("username", "<wordpress_username>");
request.AddParameter("password", "<wordpress_password>");
request.AddParameter("client_id", "<client_id>");
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("grant_type", "password");
.addFormDataPart("username", "<wordpress_username>");
.addFormDataPart("password", "<wordpress_password>");
.addFormDataPart("client_id", "<client_id>");
.build();
Request request = new Request.Builder()
.url("http://<wp_base_url>/wp-json/api/v1/token ")
.method("POST", null)
.build();
Response responseclient.newCall(request).execute();
var form = new FormData();
form.append("grant_type", "password");
form.append("username", "<wordpress_username>");
form.append("password", "<wordpress_password>");
form.append("client_id", "<client_id>");
var settings = {
"url": "http://<wp_base_url>/wp-json/api/v1/token ",
"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/api/v1/token%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('username' => '<wordpress_username>','password' => '<wordpress_password>'),
));
$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=grant_type;'))
dataList.append(encode('Content-Type: {}'.format('text/plain')))
dataList.append(encode(''))
dataList.append(encode("password"))
dataList.append(encode('--' + boundary))
dataList.append(encode('Content-Disposition: form-data; name=username;')
dataList.append('Content-Type: {}'.format('text/plain')))
dataList.append(encode(''))
dataList.append(encode("<wordpress_username>"))
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("<wordpress_password<"))
dataList.append(encode('--'+boundary))
dataList.append(encode('Content-Disposition: form-data; name=client_id;'))
dataList.append(encode('Content-Type: {}'.format('text/plain')))
dataList.append(encode(''))
dataList.append(encode("<client_id>"))
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/api/v1/token ", payload, headers)
res= conn.getresponse()
data = res.read()
print (data.decode("utf-8"))
var client = new RestClient("http://<wp_base_url>/wp-json/api/v1/token ");
client.Timeout = -1;
var request = new RestRequest(Method.POST);
request.AlwaysMultipartFormDatatrue;
request.AddParameter("grant_type", "refresh_token");
request.AddParameter("client_id", "<client_id>");
request.AddParameter("client_secret", "<client_secret>");
request.AddParameter("refresh_token", "<refresh_token>");
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("grant_type", "refresh_token");
.addFormDataPart("client_id", "<client_id>");
.addFormDataPart("client_secret", "<client_secret>");
.addFormDataPart("refresh_token", "<refresh_token>");
.build();
Request request = new Request.Builder()
.url("http://<wp_base_url>/wp-json/api/v1/token ")
.method("POST", null)
.build();
Response responseclient.newCall(request).execute();
var form = new FormData();
form.append("grant_type", "refresh_token");
form.append("client_id", "<client_id>");
form.append("client_secret", "<client_secret>");
form.append("refresh_token", "<refresh_token>");
var settings = {
"url": "http://<wp_base_url>/wp-json/api/v1/token ",
"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/api/v1/token',
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('grant_type' => 'refresh_token','client_id' => '<client_id>','client_secret' => '<client_secret>','refresh_token' => '<refresh_token>'),
));
$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=grant_type;'))
dataList.append(encode('Content-Type: {}'.format('text/plain')))
dataList.append(encode(''))
dataList.append(encode("refresh_token"))
dataList.append(encode('--' + boundary))
dataList.append(encode('Content-Disposition: form-data; name=client_id;'))
dataList.append('Content-Type: {}'.format('text/plain')))
dataList.append(encode(''))
dataList.append(encode("<client_id>"))
dataList.append(encode('--'+ boundary))
dataList.append(encode('Content-Disposition: form-data; name=client_secret;'))
dataList.append(encode('Content-Type: {}'.format('text/plain')))
dataList.append(encode(''))
dataList.append(encode("<client_id>"))
dataList.append(encode('--'+ boundary))
dataList.append(encode('Content-Disposition: form-data; name=refresh_token;'))
dataList.append(encode('Content-Type: {}'.format('text/plain')))
dataList.append(encode(''))
dataList.append(encode("<refresh_token<"))
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/api/v1/token ", 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.GET);
request.AddHeader = ("Authorization", "Bearer < access_token / id_token >")
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder().build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "");
Request request = new Request.Builder()
.url("http://<wp_base_url>//wp-json/wp/v2/posts ")
.method("GET", body)
.addHeader = ("Authorization", "Bearer < access_token / id_token >")
.build();
Response responseclient.newCall(request).execute();
var settings = {
"url": "http://<wp_base_url>/wp-json/wp/v2/posts ",
"method": "GET",
"timeout": 0,
"headers": {
"Authorization": "Bearer < access_token / id_token >"
},
};
$.ajax(settings).done(function (response) {
console.log(response);
});
<?php
$curl = curl_init();
curl_setopt_array($curl, array
(
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 => 'GET',
CURLOPT_HTTPHEADER => array(
'Authorization: Bearer < access_token / id_token >'
);
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
import http.client
conn = http.client.HTTPSConnection("<wp_base_url>")
payload = "
headers = {
'Authorization': 'Bearer < access_token / id_token >'
}
conn.request("GET", "/wp-json/wp/v2/posts ", payload, headers)
res= conn.getresponse()
data = res.read()
print (data.decode("utf-8"))
a) Método de concesión de contraseña de OAuth 2.0:
b) Método de concesión de credenciales de cliente de OAuth 2.0:
c) Solicitud de API REST para obtener el recurso real:
Esta característica permite restringir el acceso a la API REST según los roles de usuario. Puede incluir en la lista blanca los roles para los que desea permitir el acceso al recurso solicitado para las API REST. Entonces, cada vez que un usuario realiza una solicitud de API REST, se recuperará su función y solo se le permitirá acceder al recurso si su función está en la lista blanca.
¿Cómo configurarlo?
Nota: La función de restricción basada en roles es válida para autenticación básica (nombre de usuario: contraseña), método JWT y OAuth 2.0 (concesión de contraseña).
Esta característica proporciona una opción para elegir un encabezado personalizado en lugar del encabezado predeterminado "Autorización".
Aumentará la seguridad ya que el encabezado tiene el nombre de su "nombre personalizado", por lo que si alguien realiza la solicitud de API REST con un encabezado como "Autorización", no podrá acceder a las API.
¿Cómo configurarlo?
Esta característica le permite incluir sus API REST en la lista blanca para que se pueda acceder a ellas directamente sin ninguna autenticación. Por lo tanto, todas estas API REST incluidas en la lista blanca están disponibles públicamente.
¿Cómo configurarlo?
Esta característica es aplicable a los métodos JWT y OAuth 2.0 que utilizan tokens basados en el tiempo para autenticar los puntos finales de la API REST de WordPress. Esta función le permite establecer el vencimiento personalizado para los tokens, de modo que el token ya no será válido una vez que caduque.
¿Cómo configurarlo?
Envíenos un correo electrónico a apisupport@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.