autenticación api rest
Estoy intentando aprender la API REST de WordPress.
Quiero crear una publicación.
Estoy usando la aplicación Postman.
Recibo el error 401 cuando intento hacer POST (GET funciona bien)
Pero pensé que estar logueado en mi sitio WP sería suficiente para autenticarme mediante cookies.

El núcleo de WordPress ahora admite una nueva API REST a partir de la versión 4.8.x. Entre un mar de nuevas posibilidades, ahora se puede construir un front-end para un sitio web o aplicación con un framework como React o Angular y usar WordPress y su familiar panel de administración para gestionar el back-end. Así, se puede extraer todo el contenido en el front-end realizando solicitudes a la API de WordPress. Algunas solicitudes (principalmente, solicitudes POST) deben estar autenticadas.
Por lo tanto, usando JWT puedes extender la API REST de WP utilizando JSON Web Tokens Authentication como método de autenticación.
Autenticación de la API REST de WordPress:
Autenticación por cookie predeterminada: la autenticación por cookie es el único mecanismo de autenticación disponible de forma nativa dentro de WordPress.
Aplicaciones remotas:
Para admitir aplicaciones remotas, necesitamos agregar un nuevo método de autenticación para la API REST usando un plugin.
Actualmente, las opciones admitidas son Basic Auth, OAuth y JWT:
Basic Auth con un nombre de usuario y contraseña se considera inseguro y solo debe usarse en escenarios de desarrollo
OAuth es genial pero puede ser complicado de autenticar
JWT es increíble y funciona muy bien con frameworks de front-end
¿Qué es JSON Web Token?
JSON Web Token (JWT) es un estándar abierto (RFC 7519) que define una forma compacta y autocontenida para transmitir información de manera segura entre partes como un objeto JSON. Esta información puede ser verificada y confiable porque está firmada digitalmente. Los JWTs pueden ser firmados usando un secreto (con el algoritmo HMAC) o un par de claves pública/privada usando RSA o ECDSA.
Aunque los JWTs pueden ser cifrados para también proporcionar confidencialidad entre las partes, nos enfocaremos en tokens firmados. Los tokens firmados pueden verificar la integridad de las afirmaciones contenidas en él, mientras que los tokens cifrados ocultan esas afirmaciones de otras partes. Cuando los tokens se firman usando pares de claves pública/privada, la firma también certifica que solo la parte que posee la clave privada es la que lo firmó.
Usos de JSON Web Tokens:
Autorización – Una vez que el usuario ha iniciado sesión, cada solicitud posterior incluirá el JWT, permitiendo al usuario acceder a rutas, servicios y recursos que están permitidos con ese token.
Intercambio de información – Los JSON Web Tokens son una buena manera de transmitir información de forma segura entre partes. Debido a que los JWTs pueden ser firmados—por ejemplo, usando pares de claves pública/privada
¿Por qué deberíamos usar JSON Web Tokens?
Seguridad – transmisión segura de información entre partes usando pares de claves pública/privada
Los analizadores JSON son comunes en la mayoría de los lenguajes de programación porque se mapean directamente a objetos
Facilidad de procesamiento del token JWT en el lado del cliente en múltiples plataformas, especialmente móviles.
Compacto: Debido a su tamaño, puede ser enviado a través de una URL, parámetro POST o dentro de un encabezado HTTP. Además, debido a su tamaño, su transmisión es rápida.
Autocontenido: La carga útil contiene toda la información requerida sobre el usuario, evitando consultar la base de datos más de una vez.
¿Cómo funcionan los JSON Web Tokens?
Inicio de sesión del usuario ([nombre de usuario/contraseña]) => Servidor de autenticación => Usuario autenticado, JWT creado y devuelto al USUARIO
USUARIO (El usuario pasa [JWT] al realizar llamadas API) => Servidor de aplicación => La aplicación verifica y procesa la llamada API => envía datos/mensaje al USUARIO
el usuario primero inicia sesión en el servidor de autenticación usando el sistema de inicio de sesión del servidor de autenticación (por ejemplo, nombre de usuario y contraseña, inicio de sesión de Facebook, Google, Twitter, etc.). El servidor de autenticación luego crea el JWT y lo envía al usuario. Cuando el usuario realiza llamadas API a la aplicación, el usuario pasa el JWT junto con la llamada API. En esta configuración, el servidor de aplicación estaría configurado para verificar que los JWTs entrantes son creados por el servidor de autenticación
cuando el usuario realiza llamadas API con el JWT adjunto, la aplicación puede usar el JWT para verificar que la llamada API proviene de un usuario autenticado.
JWT es solo una cadena con el siguiente formato:
encabezado.carga_útil.firma
Encabezado– consta de dos partes: el tipo del token, que es JWT, y el algoritmo de firma que se está utilizando, como HMAC SHA256 o RSA.
Por ejemplo:
{
“alg”: “HS256”,
“typ”: “JWT”
}
Carga útil – contiene las afirmaciones. Las afirmaciones son declaraciones sobre una entidad (típicamente, el usuario) y datos adicionales. Hay tres tipos de afirmaciones: registradas, públicas y privadas.
Afirmaciones registradas: Son un conjunto de afirmaciones predefinidas que no son obligatorias pero se recomiendan, para proporcionar un conjunto de afirmaciones útiles e interoperables. Algunas de ellas son: iss (emisor), exp (tiempo de expiración), sub (sujeto), aud (audiencia), y otras.
Afirmaciones públicas: Pueden ser definidas a voluntad por aquellos que usan JWTs. Pero para evitar colisiones, deben definirse en el IANA JSON Web Token Registry.
Afirmaciones privadas: Son afirmaciones personalizadas creadas para compartir información entre partes que acuerdan usarlas y no son ni afirmaciones registradas ni públicas.
Un ejemplo de carga útil podría ser:
{
“user_id”: “4”
}
Firma – Para crear la parte de la firma, debes tomar el encabezado codificado, la carga útil codificada, un secreto, el algoritmo especificado en el encabezado, y firmar eso.
Por ejemplo, si deseas usar el algoritmo HMAC SHA256, la firma se creará de la siguiente manera:
HMACSHA256(
base64UrlEncode(header) + “.” +
base64UrlEncode(payload),
secret)
La firma se usa para verificar que el mensaje no fue cambiado en el camino, y, en el caso de tokens firmados con una clave privada, también puede verificar que el remitente del JWT es quien dice ser.
Plugins de autenticación:
Autenticación que funcionará desde aplicaciones remotas.
Algunos plugins para autenticación:
OAuth 1.0a Server : Conecta aplicaciones a tu sitio de WordPress sin nunca revelar tu contraseña.
Este plugin solo admite WordPress >= 4.4.
Application Passwords : – autentica un usuario sin proporcionar directamente su contraseña, en su lugar usarás una cadena codificada en base64 de su nombre de usuario y una nueva contraseña de aplicación.
JSON Web Tokens – Extiende la API REST de WP utilizando JSON Web Tokens Authentication como método de autenticación.
WP User : Extiende la API REST de WP utilizando JSON Web Tokens (JWT) Authentication como método de autenticación.
El plugin WP User te ayuda a crear formularios de inicio de sesión y registro en el front-end del sitio web, así como a crear tokens JWT para la API REST de WP con características adicionales de seguridad como Límite de Intentos de Inicio de Sesión, Expresión Regular de Contraseña, Lista Negra / Lista Blanca de direcciones IP, etc.
Para inicios de sesión o registros de usuarios y para evitar las páginas normales de inicio de sesión de WordPress, este plugin añade la capacidad de colocar un inicio de sesión, registro, olvidé contraseña con efectos suaves en AJAX, así como soporte para la API REST.
https://wordpress.org/plugins/wp-user/
Conclusión
La API RESTful de WP es el futuro para el CMS WordPress y definitivamente tener una forma confiable de autenticar usuarios es lo primero en la lista. JWT es la mejor solución para autenticación con la ayuda de WP User o JSON Web Tokens.

No, el hecho de que estés autenticado en tu sitio de Wordpress no significa que estés autenticado en la API de Wordpress. Necesitas un token JWT.
