Autenticación por Token

En este artículo te mostraremos cómo puedes configurar la autenticación de usuarios mediante un token.

Lara Macarena Sastre avatar
Escrito por Lara Macarena Sastre
Actualizado hace más de una semana

¿Qué es y para qué sirve?

Es una integración que permite el acceso a usuarios mediante tokens JWT (parámetros seguros) que se envían desde un recurso externo hacia la tienda. Los recursos externos podrían ser por ejemplo la intranet de una organización educativa o empresa.
Esta integración permite realizar un inicio de sesión automático a un usuario específico cuando existe en la base de datos de la tienda. Si el usuario no existe, se creará uno e iniciará sesión.

Sirve para el inicio de sesión sincrónico automático desde la página de tu cliente a la tienda. Para ello, los usuarios deberán hacer clic en un enlace (botón o link en la plataforma externa) para iniciar sesión automáticamente en la tienda.


El sistema tiene una ruta /auth/token que busca un parámetro llamado external-auth-token en cadenas de consulta, cookies o encabezados. Este parámetro es un JWT con información específica y firmado con una clave compartida (El algoritmo es HS256).

https:// yout-store.com /auth/ token? external-auth-token= {new-jwt-token}

  • Por ejemplo: https:// alephdigital.publica.la /auth/token? external-auth-token= eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJwdWJsaWNhbGEiLCJqdGkiOiJqbm9zcWl4dS13YWlic3Zzejh4ODl3Z3l4dGZkeTR4NnIiLCJleHAiOjE2MjM0NTQ3NzgsImF1ZCI6ImZhcmZhbGxhIiwic3ViIjoidXNlciIsInVzZXIiOnsidXVpZCI6ImQ5ZGZiNWNmLWU4MTctNDJkZi1hZDE1LTdmM2U4NTMwNDNkMiIsImVtYWlsIjoiZ29uemFsZXpAdGVzdC5zeW5jcm9taW5kLmNvbSJ9fQ.RvoGxFq9e9uJMehG87Y5ISbaqMz_4wtKBVA

    💡 Puede complementarse para asignar permisos de lectura a usuarios mediante Api Orders. Aquí te compartimos nuestra documentación técnica.

    ⚠️ Esta integración no se puede utilizar para registros de usuarios como una API.

Te recomendamos revisar AQUÍ nuestra documentación técnica en donde te compartimos ejemplos para crear tokens JWT con PHP, Python y JavaScript e información adicional para solucionar problemas que puedan presentarse.

📹 Te dejamos aquí un instructivo completo.

CONFIGURACIÓN:


1. Requisitos previos. Una vez hayas creado el JWT token, debes escribirnos a support@publica.la para brindarnos la siguiente información:

  • redirect_url: URL para la redirección en caso de falla en el proceso de inicio de sesión o registro.
    Por ejemplo "https://www.alephdigital.publica.la/?libros-digitales=error"

  • jti: una key que se utiliza durante la creación del token. Es una clave compartida que se usa para firmar los tokens. Podrás obtener más información en el paso 2.
    Por ejemplo "&BKcc7<XX:7>~V2A"

⚠️ No utilizar la API key que encontrarás en tu Panel de control. Utiliza la generada en la herramientra proporcionada o en el sitio web de preferencia para este paso y los siguientes.

  • issuer: identifica al firmante de confianza del token y se utiliza en los datos de carga útil del token. Aquí puedes colocar el slug o nombre de la tienda.
    Por ejemplo "alephdigital"

2. Crea un token JWT. A continuación te compartimos un ejemplo y las referencias de cada key:

Para generar una clave JWT como explicamos a continuación puedes utilizar la herramiento jwt.io.

{

"iss" : "publicala" , // Slug para identificar quién firma el token. Debe utilizar el emisor proporcionado en el paso de requisitos previos. Recomendamos sea el nombre de la tienda.

"jti" : "jnosqixu-waibsvsz8x89wgyxtfdy4x6r" , // Una identificación única para el token, podría estar en formato UUID V4. Puedes utilizar Passwords Generator.

"exp" : 1614556800 , // Fecha de vencimiento del token, es una marca de tiempo expresada en segundos. Debe ser 60 segundos en el futuro. La zona horaria utilizada es UTC. Puedes utilizar https://www.unixtimestamp.com/

"aud" : "farfalla" , // Identifica el destino del token. No modificar, siempre debe ser la cadena "farfalla".

"sub" : "usuario" , // No modificar, siempre debe ser la cadena "usuario".

"intended_url" : "https://your-store.com/reader/publication-name" // Le permite configurar la URL de destino después de autenticar al usuario. Puede verificar cómo configurar esto en la sección Cómo usar la URL deseada.

"user" : {

"uuid" : "44b8cc41-503c-4e76-9144-7193af85384e" , // [obligatorio] Es una cadena obligatoria y se utiliza para identificar a cada usuario. Es esencial que sea único para cada usuario, podría ser la identificación de usuario convertida en cadena (por ejemplo, 1234) o un UUID (por ejemplo, eeb78e86-8105-443d-bd28-b2eee1607d52).

"email" : "example@publica.la" , // [opcional] Se utiliza para identificar a los usuarios dentro del sistema y al analizar las estadísticas de uso. Si no se incluye, el sistema generará al nuevo usuario.

"picture_url" : "https://image-picture-domain.com/picture.jpg", // [opcional] Si está presente, se utiliza como imagen de perfil.

"accept_terms_and_policies": true // [opcional] Booleano. Se utiliza para aceptar automáticamente los términos y condiciones una vez el usuario ha sido creado.
}

}

Key

Descripción

iss

Slug para identificar quién firma el token. Debe utilizar el issuer proporcionado en el paso anterior

jti

Una identificación única para el token, podría estar en formato UUID V4.

exp

Fecha de vencimiento del token, es una marca de tiempo expresada en segundos. Puedes utilizar esta herramienta para generarlo.

aud

Identifica el destino del token. Debe ser el string farfalla.

sub

Debe ser el string usuario.

intended_url

Permite configurar la URL de destino después de autenticar al usuario. Ten en cuenta las siguientes consideraciones:

  • Si no se estableces una URL, el usuario será redirigido a la tienda /library de forma predeterminada.

  • La ruta dinámica /redirect-to-latest-issue se puede utilizar para que el usuario siempre llegue a la última publicación.

  • Si deseas redirigir al usuario a una publicación específica debes utilizar el enlace a la publicación del lector. Aquí te compartimos nuestra documentación en donde te mostramos cómo obtener la URL a la publicación.

user

Un objeto con los siguientes campos:

  • uuid Es una cadena obligatoria y se utiliza para identificar a cada usuario.
    Es esencial que sea único para cada usuario, podría ser la identificación de usuario convertida en string (por ejemplo, 1234) o un UUID (por ejemplo, eeb78e86-8105-443d-bd28-b2eee1607d52).

  • correo electrónico (Opcional) Se utiliza para identificar a los usuarios dentro del sistema y cuando se analizan las estadísticas de uso.

  • picture_url (Opcional) Si está presente, se utiliza como imagen de perfil.

  • accept_terms_and_policies (Opcional) Se utiliza para aceptar automáticamente los términos y condiciones una vez el usuario ha sido creado.

Herramientas útiles:

Para futuras integraciones por Token siempre debes utilizar la misma información que nos brindaste en el paso Requisitos previos.

Esperamos que este tutorial te haya resultado sencillo y si tienes más dudas escríbenos a support@publica.la.

¿Ha quedado contestada tu pregunta?