Resultados de la búsqueda :

×

Guía para crear API REST seguras para WordPress con autenticación básica

Autenticación básica para las API REST de WordPress Protege el acceso a los puntos finales de WordPress validando las solicitudes de API con un token generado a partir de un nombre de usuario y contraseña o credenciales de cliente. Este método de autenticación confirma la identidad del usuario al interactuar con el servicio web, garantizando que solo los usuarios autorizados puedan acceder a la API REST de WordPress.



El plugin Basic Auth de WordPress ayuda a proteger las API REST mediante la autenticación básica. Con este método, cada solicitud a la API envía credenciales (nombre de usuario o correo electrónico y contraseña) codificadas en base64, lo que garantiza una comunicación segura entre tu sitio WordPress y las aplicaciones externas.


Plugin de autenticación de API REST para WordPress

El plugin de autenticación de API REST para WordPress protege tus API REST contra el acceso no autorizado. Ofrece múltiples métodos de autenticación, como autenticación básica, autenticación con clave API, autenticación OAuth 2.0 y autenticación JWT.

Para saber más   


Para configurar la autenticación básica de WP API, debe instalar un Plugin de autenticación de API REST para WordPressEste plugin permite que la API REST de WordPress acepte credenciales de autenticación básica para un acceso seguro.


Guía paso por paso:


  • Paso 1: instale el complemento Busca "Autenticación API REST para WP" en el repositorio de plugins de WordPress e instálalo. Este plugin habilitará la autenticación básica de la API REST en tu sitio web.
  • Paso 2: active el complemento - Una vez instalado, active el plugin desde su panel de WordPress accediendo a Plugins → Plugins instalados y haciendo clic en "Activar" junto al plugin REST API Authentication.
  • Paso 3: Configurar la autenticación - Abre la configuración del plugin y sigue los pasos para configurar la autenticación básica para tu API REST. Ve a la página de configuración del plugin para configurar tu método de autenticación.


1. Uso de nombre de usuario y contraseña para una interacción segura con la API REST de WordPress


Si estás desarrollando una aplicación para Android o iOS que permita a los usuarios publicar sus propios feeds o blogs, garantizar interacciones seguras y autenticadas con la API REST para WordPress es fundamental.

Cómo gestionar de forma segura la autenticación de usuarios:

  • Utilice la autenticación básica para WordPress: Implementa la autenticación básica para la API REST de WordPress con los nombres de usuario y contraseñas de los usuarios. Este método garantiza que las solicitudes realizadas a través de tu aplicación se autentiquen de forma segura.
  • Autenticar solicitudes de usuario: Cuando un usuario inicia sesión en tu aplicación, se crea una sesión y las credenciales del usuario se envían en formato cifrado dentro del encabezado de Autorización Básica.
  • Administrar permisos: Según los permisos de WordPress del usuario, la API REST determina las acciones que puede realizar y el contenido al que puede acceder. Esto ayuda a controlar las capacidades del usuario y a mantener interacciones seguras con su sitio de WordPress.

Al utilizar la autenticación básica para WordPress con credenciales de usuario, se garantiza que las acciones de cada usuario estén debidamente autenticadas y autorizadas, lo que proporciona un entorno seguro para el contenido generado por el usuario.


Método de autenticación básica de la API REST para WordPress mediante credenciales de usuario

2. Uso de credenciales de cliente para una interacción segura con la API REST de WordPress


Si tienes una aplicación para Android o iOS y necesitas interactuar con el contenido de WordPress a través de su API REST, es fundamental proteger tu sitio del acceso no autorizado. En lugar de usar directamente las credenciales de usuario de WordPress, lo cual puede ser arriesgado, deberías optar por la autenticación básica de WordPress con credenciales de cliente.

A continuación se explica cómo utilizar de forma segura las credenciales del cliente:

  • Obtener el ID del cliente y el secreto del cliente: En lugar de exponer las credenciales de usuario de WordPress, genere un ID de cliente y un secreto de cliente para su aplicación.
  • Enviar solicitudes seguras: Al realizar solicitudes de API, incluya el ID y el secreto del cliente. Estas credenciales se transmiten en formato cifrado dentro del encabezado de autorización básica.
  • Validación y acceso: Una vez que la API REST de WordPress recibe tu solicitud, valida las credenciales del cliente. Si la validación es exitosa, obtienes acceso a los puntos finales de la API que necesitas, manteniendo la seguridad de tu sitio.

Al usar credenciales de cliente, garantiza que su información de usuario de WordPress permanezca protegida y al mismo tiempo permite que su aplicación interactúe con su sitio de WordPress de manera eficiente.


Método de autenticación básica de la API REST para WordPress mediante credenciales de cliente.

Uso de la autenticación básica con la API REST: nombre de usuario y contraseña


  • En el complemento, vaya a Configurar métodos pestaña en la sección izquierda.
  • Haga clic en Autenticación básica como método de autenticación API.
  • Método de autenticación básica de la API REST para WordPress mediante nombre de usuario y contraseña.
  • Seleccione Nombre de usuario y contraseña con codificación Base64 y hacer clic en Siguiente En la esquina superior derecha.
  • Método de autenticación básica de la API REST para WordPress mediante nombre de usuario y contraseña.
  • Para probar la funcionalidad, complete los campos de nombre de usuario y contraseña de un usuario existente.
  • Método de autenticación básica de la API REST para WordPress mediante nombre de usuario y contraseña.
  • Puede editar el punto final de la API REST para obtener detalles de ese punto final. Ejemplo: se seleccionó el punto final /pages aquí:
  • Haga clic en el elemento Configuración de prueba y verifique el resultado que se muestra en la pantalla.
  • Haga clic en el botón Termine .
  • Método de autenticación básica de la API REST para WordPress mediante nombre de usuario y contraseña.

Autenticación básica de API REST mediante ID de cliente y secreto de cliente:


  • En el complemento, vaya a Configurar la autenticación API pestaña y haga clic en Autenticación básica como método de autenticación API.
  • Ahora, seleccione el ID de cliente: Secreto de cliente como tipo de clave de autenticación básica y elija cualquiera de los métodos de cifrado disponibles, que dependen de cómo desee codificar las credenciales del usuario. HMAC es el más seguro de ellos y el recomendado.
  • Finalmente, haga clic en Guardar configuración Por lo tanto, se habilitará la autenticación básica para la API REST de WordPress.
  • Método de autenticación básica de la API REST para WordPress mediante client-id y client-secret
  • Después de guardar la configuración de autenticación básica de la API REST, para acceder a las API REST de WordPress, debe enviar una solicitud a la API REST con su clave de autorización correspondiente. Debe usar el formato de solicitud que se muestra a continuación.
  •   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 protected]&password=test&name=test" 
      
  • La función PHP base64_encode(string) para codificación base64 se puede utilizar de la siguiente manera:
  •         
       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==
  • Consulte el Respuesta de error para autenticación básica utilizando ID de cliente y secreto de cliente.
  • Consulte el documentación del desarrollador para más información.


 
  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", "[email protected]");
  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","[email protected]")
  .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", "[email protected]");
  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' => '[email protected]','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("[email protected]"))
  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:

  • Haga clic en el elemento Muestras de cartero pestaña en el complemento.
  • Método de autenticación básica de la API REST para la implementación de WordPress en Postman
  • Ahora, coloque el cursor sobre la tarjeta Ejemplos de cartero de autenticación básica.
      • Método de autenticación básica de la API REST para el archivo JSON de Postman de WordPress para nombre de usuario: contraseña
      • Importar lo descargado Archivo JSON en la aplicación Postman como se muestra a continuación.
      • Método de autenticación básica de la API REST para la importación de archivos JSON en Postman para WordPress
      • Una vez que importe el archivo json, haga clic en la solicitud de API REST en Colecciones, como se muestra en la última figura. Reemplace el con su dominio de Wordpress en el http://<wp_base_url>/wp-json/wp/v2/posts y reemplazar el codificado en base64 en el encabezado con el valor codificado base.
        • Ejemplo:
          Para el nombre de usuario: testuser y la contraseña: password@123, el valor codificado en base64 será 'dGVzdHVzZXI6cGFzc3dvcmRAMTIz'

      Método de clave de autenticación de API REST de WordPress, cartero reemplaza la URL base
      • Método de autenticación básica de la API REST para WordPress Postman. Archivo JSON para ID de cliente y secreto de cliente.
      • Importar lo descargado Archivo JSON en la aplicación Postman como se muestra a continuación.
      • Método de autenticación básica de la API REST para la importación de archivos JSON en Postman para WordPress
      • Una vez que importe el archivo json, haga clic en la solicitud de API REST en Colecciones, como se muestra en la última figura. Ahora reemplace el con su dominio de Wordpress en el http://<wp_base_url>/wp-json/wp/v2/posts y reemplazar el codificado en base64 en el encabezado con el valor codificado base.
      • Método de autenticación básica de la API REST para WordPress Postman: reemplazar la URL base


1. Restricción de API REST basada en roles:


Esta función restringe el acceso a la API REST de WordPress según los roles de usuario. Puedes crear una lista de permisos para roles específicos que tengan acceso a determinados recursos de la API REST. Cuando se realiza una solicitud a la API REST, se verifica el rol del usuario y solo se concede el acceso si dicho rol se encuentra en la lista de permisos.


¿Cómo configurar la restricción de API REST basada en roles en WordPress?

  • Ir al complemento Configuración Avanzada .
  • En la sección Restricción basada en roles Sección, todos los roles tienen permitido acceder a las API de forma predeterminada.
  • Habilite la casilla de verificación junto a los roles a los que desea restringir el acceso a las API.
  • Método de autenticación básica de la API REST para la implementación de WordPress en Postman
  • En la imagen anterior, la casilla de verificación del rol de suscriptor está habilitada. Por lo tanto, cada vez que un usuario con su rol de suscriptor realiza una solicitud de API, no podrá acceder al recurso solicitado.

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).


2. Encabezado personalizado:


La función de encabezado personalizado le permite usar un encabezado personalizado en lugar del encabezado predeterminado "Authorization". Esto añade una capa adicional de seguridad, ya que la API REST solo aceptará solicitudes con el nombre de encabezado personalizado que usted haya definido. Si alguien intenta enviar una solicitud utilizando el encabezado predeterminado "Authorization", se le denegará el acceso.


¿Cómo configurar un encabezado personalizado para la autenticación de la API REST en WordPress?

  • Ir al complemento Configuración Avanzada .
  • En la sección Personalizar encabezado Sección, ingrese el nombre de encabezado preferido en el cuadro de texto.
  • Guarde los cambios para aplicar el nuevo encabezado personalizado para las solicitudes de API.
  • Método de autenticación básica de la API REST para la implementación de WordPress en Postman

3. Excluir las API REST:


La función Excluir API REST permite que se acceda a determinados puntos finales de API REST sin autenticación. Estas API excluidas pasan a estar disponibles públicamente, lo que permite acceder a ellas sin necesidad de token ni inicio de sesión.


¿Cómo configurar la API REST excluida en la autenticación JWT?

  • Ir al complemento Configuración Avanzada .
  • En la sección Excluir API REST Sección, ingrese sus puntos finales de API en el formato requerido.
  • Las API ingresadas serán excluidas de la autenticación y estarán disponibles para acceso público.
  • Método de autenticación básica de la API REST para la implementación de WordPress en Postman
  • Ejemplo: supongamos que desea excluir la API REST '/wp-json/wp/v2/posts', luego debes ingresar '/wp/v2/posts' en el cuadro de texto.

4. Habilite el cifrado avanzado para los tokens usando HMAC:


Esta función está disponible en el método de autenticación básica. Por defecto, los tokens se cifran mediante codificación Base64, pero con la opción avanzada, puede habilitar el cifrado HMAC para los tokens. HMAC proporciona un nivel de seguridad mucho mayor, lo que garantiza que las solicitudes a la API estén fuertemente protegidas contra manipulaciones y accesos no autorizados.


¿Cómo configurar el cifrado HMAC para tokens en WordPress para la autenticación básica?

  • Ir al complemento Configuración Avanzada pestaña y abra la Método de cifrado de token .
  • Seleccione HMAC En lugar de Base64, guarde los cambios para aplicar cifrado seguro para todos los tokens.


Por defecto, la autenticación básica utiliza la codificación Base64, que no es totalmente segura. Sin embargo, con complementos como el nuestro, puede habilitar el cifrado HMAC avanzado, lo que hace que los tokens sean más seguros y adecuados para su uso en entornos de producción.

La autenticación básica es ideal para pruebas, desarrollo o aplicaciones pequeñas donde la simplicidad es importante. JWT se recomienda para aplicaciones más grandes que requieren sesiones basadas en tokens y escalabilidad.

Sí. La autenticación básica se puede utilizar con credenciales de usuario o credenciales de cliente en aplicaciones móviles para validar de forma segura las solicitudes de API.

Si se desactiva, los puntos finales de su API REST ya no validarán las solicitudes con autenticación básica. Esto podría dejar su API expuesta a accesos no autorizados, por lo que se recomienda mantener siempre la autenticación habilitada.

Con la función de restricción basada en roles, puedes especificar qué roles de WordPress tienen permitido o denegado el acceso a los puntos finales de tu API REST.




Obtenga una prueba con todas las funciones



 Gracias por tu respuesta. Nos pondremos en contacto contigo en breve.

Algo salió mal. Por favor envíe su consulta nuevamente

Integre los puntos finales de API REST externos/de terceros

¿Necesitas ayuda?

Envíenos un correo electrónico a [email protected] para recibir orientación rápida (por correo electrónico/reunión) sobre sus necesidades y nuestro equipo lo ayudará a seleccionar la solución/plan más adecuado según sus necesidades.


ADFS_sso ×
¡Hola!

¿Necesitas ayuda? ¡Estamos aquí!

múltiples proveedores