Autenticación JWT con WP - Enfoque

8

Estamos utilizando JWT ( JSON Web Token ) para autenticar nuestra aplicación de WordPress con un servicio externo. El flujo actual en el que estamos pensando es así:

  1. El usuario inicia sesión en el sitio principal
  2. El sitio principal envía una solicitud POST con la información del usuario y el token JWT al sitio de WordPress
  3. El sitio WP almacena el token JWT
  4. El token se verifica para que caduque cada vez que el usuario visita una nueva página, y si el token caduca, el usuario será redirigido al sitio principal para iniciar sesión nuevamente.

Mis preguntas:

  1. ¿Es este el enfoque correcto?
  2. ¿Cómo guardo el token JWT? ¿Una galleta? ¿O en la base de datos, con la información del usuario como un identificador único? Nota: Los usuarios no estarán registrados en el sitio WP.
  3. ¿Cómo verifico la caducidad?

Hay un complemento WP para JWT pero no hay documentación para ello, por lo tanto, no estoy seguro de si servirá para mi propósito.

Rutwick Gangurde
fuente
hmmm wtf es jwt?
Mark Kaplun
Se agregaron enlaces relevantes. Cheque.
Rutwick Gangurde
ok, ahora sé qué es JWT, todavía no entiendo la pregunta y por qué es específica de WordPress. ¿No hay una guía de mejores prácticas para ello? De todos modos, las recomendaciones de complementos / bibliotecas están fuera de tema ...
Mark Kaplun
1
No quiero una recomendación de complemento, estoy escribiendo mi propio código. Se eliminó la última línea que lo llevó a pensar que sí.
Rutwick Gangurde

Respuestas:

8

Esto apareció como una notificación debido al voto positivo. Así es como lo resolví.

  1. El punto final codificado en la aplicación con la que se supone que debo autenticar prepara el token.
  2. El token debe estar en el formato especificado.
  3. Luego debe estar codificado en base 64 y cifrado hash.
  4. El wp_initcontrolador debe usarse para manejar la solicitud POST enviada por el punto final, para extraer el token.
  5. La clave se compartirá de alguna otra manera, utilizada para descifrar.
  6. Una vez que se extrae el token, compárelo con un token generado localmente con la misma información.
  7. Almacénelo en una cookie y verifíquelo en cada acceso a la página. Puede expirar después de un tiempo o seguir aumentando el intervalo de tiempo en cada acceso a la página.

El punto final podría estar en cualquier idioma. Además, este es el flujo general del mismo, puede usarlo en cualquier lugar que desee.

Rutwick Gangurde
fuente