Ir al contenido principal

🔐 ¿Cómo configurar el SSO en Tiendup?

Conecta tu sistema de usuarios con Tiendup para que tus clientes puedan iniciar sesión, acceder a contenidos y realizar compras utilizando una única cuenta.

El SSO (Single Sign-On) de Tiendup permite que los clientes de tu negocio se autentiquen con las credenciales que ya utilizan en tu sistema externo e ingresen a tu sitio en Tiendup sin crear una nueva cuenta.

Es especialmente útil si ya contás con una plataforma con usuarios registrados y querés ofrecer productos o contenidos mediante Tiendup. De esta manera, tus clientes pueden utilizar una única cuenta para acceder a ambos sistemas.

¿Es una funcionalidad adecuada para mi negocio?

El SSO es una buena opción si tu negocio ya cuenta con un sistema externo donde tus clientes se registran e inician sesión, y quieres que puedan acceder a Tiendup utilizando esa misma cuenta.

Para realizar la integración necesitas:

  • Tener acceso al backend de tu sistema actual.

  • Poder autenticar a los usuarios desde ese sistema.

  • Poder generar tokens JWT firmados.

  • Contar con una persona con conocimientos técnicos para implementar y mantener la integración.

⚠️ Si utilizas una plataforma cerrada o un servicio en la nube que no permite modificar su código ni integrar sistemas externos, es posible que no puedas utilizar esta funcionalidad.

El SSO tampoco suele ser necesario si todavía no tienes usuarios registrados en otro sistema. En ese caso, puedes utilizar directamente el registro y el inicio de sesión incluidos en Tiendup.


¿Cómo adquirir y activar la funcionalidad?

SSO está disponible como un complemento de pago único. Para adquirirlo, debes comunicarte con el equipo de soporte de Tiendup y solicitar una propuesta comercial.

Una vez contratado, el equipo de Tiendup habilitará la funcionalidad en tu negocio. Cuando esté disponible, encontrarás una nueva sección en el panel de administración:

Configuración → SSO

Desde allí podrás comenzar la configuración de la integración. El SSO no comenzará a funcionar hasta que completes los datos necesarios y cambies su estado a Activo.

¿Cómo funciona el flujo de autenticación?

Cuando el SSO está activo, Tiendup deriva el registro y el inicio de sesión de los clientes a tu sistema externo. Tiendup no recibe ni valida sus contraseñas.

El flujo funciona de la siguiente manera:

  1. Ingreso: el cliente intenta iniciar sesión, registrarse, acceder a un contenido o realizar una compra en tu sitio de Tiendup.

  2. Redirección: Tiendup envía al cliente a la URL de inicio de sesión o registro configurada para tu sistema externo.

  3. Autenticación: tu sistema valida las credenciales del cliente y confirma su identidad.

  4. Generación del JWT: el backend de tu sistema genera un token JWT con los datos del cliente y lo firma con la SSO Key proporcionada por Tiendup.

  5. Retorno a Tiendup: tu sistema redirige al cliente al endpoint SSO de tu sitio en Tiendup y envía el JWT generado.

  6. Validación: Tiendup valida la firma, el vencimiento y los datos incluidos en el token.

  7. Inicio de sesión: si el JWT es válido, Tiendup crea o actualiza al cliente e inicia su sesión automáticamente.

  8. Redirección final: Tiendup envía al cliente a la URL de retorno configurada o, si no se definió una, a la página principal del sitio.


Como activar SSO en Tiendup

1 - Una vez habilitada la funcionalidad, ingresa al panel de administración de Tiendup y dirígete a Configuración → SSO

2 - A continuación haz clic en Configurar SSO

3 - Luego completa los siguientes campos:

  • SSO Key: clave privada generada por Tiendup para firmar y validar los tokens JWT. Debes almacenarla de forma segura y no compartirla públicamente.

  • URL de inicio de sesión: dirección de tu sistema externo a la que Tiendup enviará a los clientes cuando necesiten iniciar sesión.

  • URL de registro: dirección de tu sistema externo a la que Tiendup enviará a los clientes que necesiten registrarse. Si no completas este campo, se utilizará la URL de inicio de sesión.

  • URL de error: dirección de tu sistema externo a la que Tiendup redirigirá al cliente si no puede validar o procesar el JWT. Si no se configura, Tiendup mostrará una página 404.

  • URL de retorno: dirección opcional a la que Tiendup redirigirá al cliente después de iniciar su sesión correctamente. Si no se configura, el cliente será enviado a la página principal del sitio en Tiendup.

  • Estado: determina si la integración está activa. Cuando el SSO está inactivo, el registro y el inicio de sesión funcionan de manera tradicional en Tiendup.

Todas las URLs deben utilizar el protocolo HTTPS.

Antes de cambiar el estado a Activo, asegúrate de que tu sistema externo pueda generar el JWT y redirigir correctamente a los clientes hacia Tiendup. Una configuración incompleta puede impedir que los clientes inicien sesión, accedan a contenidos o realicen compras.


Integración técnica

La integración se realiza mediante un token JWT firmado con el algoritmo HS256. Este token permite que Tiendup verifique que la solicitud fue generada por tu sistema y obtenga los datos necesarios para identificar al cliente.

La generación del JWT debe realizarse exclusivamente desde el backend de tu sistema, después de autenticar correctamente al usuario.

El proceso técnico es el siguiente:

  1. Tu sistema autentica al usuario con sus credenciales habituales.

  2. El backend obtiene los datos del usuario autenticado.

  3. El backend genera un JWT con los atributos requeridos.

  4. El JWT se firma utilizando la SSO Key disponible en el panel de Tiendup.

  5. Tu sistema redirige el navegador del usuario al endpoint SSO de tu sitio en Tiendup.

La URL de destino debe tener el siguiente formato:

Reemplaza dominio-del-sitio.com por el dominio conectado a tu sitio en Tiendup y TOKEN_GENERADO por el JWT firmado.

El token debe enviarse utilizando el parámetro jwt correctamente codificado dentro de la URL. Por ejemplo:

https://dominio-del-sitio.com/sso?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9…

Si el token es válido, Tiendup crea o actualiza al cliente e inicia su sesión. Si no puede validarlo, redirige al usuario a la URL de error configurada o muestra una página 404.

La SSO Key debe permanecer únicamente en el backend. No debe incluirse en código JavaScript del navegador.

Datos del JWT

El JWT debe estar firmado con el algoritmo HS256 utilizando la SSO Key generada en el panel de Tiendup.

El payload debe incluir los siguientes atributos:

Atributo

Requerido

Descripción

email

Correo electrónico válido del usuario. Tiendup lo utiliza para identificar al cliente.

name

Nombre del cliente

last_name

No

Apellido del cliente

iat

Fecha y hora de emisión del token, expresada como timestamp Unix.

exp

Fecha y hora de vencimiento del token, expresada como timestamp Unix.

Ejemplo de payload

{
"email": "persona@ejemplo.com",
"name": "Nombre",
"last_name": "Apellido",
"iat": 1789135200,
"exp": 1789135500
}

Consideraciones importantes

  • email debe contener una dirección válida.

  • iat debe representar el momento en que se genera el JWT.

  • exp debe ser posterior a iat.

  • La diferencia entre iat y exp no puede superar los cinco minutos.

  • El servidor que genera el token debe mantener su fecha y hora correctamente sincronizadas.

  • Se debe generar un nuevo JWT para cada intento de inicio de sesión.

Tiendup utiliza el correo electrónico como identificador del cliente:

  • Si el correo electrónico no existe en el negocio, Tiendup crea un nuevo cliente.

  • Si ya existe, Tiendup actualiza sus datos e inicia su sesión.

  • Si el correo electrónico cambia en el sistema externo, Tiendup puede interpretarlo como un cliente diferente y crear una nueva cuenta.

El encabezado del token debe indicar el tipo JWT y el algoritmo HS256:

{
"typ": "JWT",
"alg": "HS256"
}

Utiliza una biblioteca compatible con JWT y configura HS256 como algoritmo de firma. La biblioteca generará automáticamente el encabezado del token.

Ejemplos por lenguaje

Los siguientes ejemplos muestran cómo generar un JWT con una vigencia de cinco minutos y redirigir al usuario hacia Tiendup.

Los ejemplos asumen que:

  • El usuario ya fue autenticado correctamente en el sistema externo.

  • La información del usuario está disponible en la variable user.

  • La SSO Key está almacenada en una variable de entorno llamada TIENDUP_SSO_KEY.

  • Debes reemplazar dominio-del-sitio.com por el dominio de tu sitio en Tiendup.

PHP

Puedes utilizar la biblioteca firebase/php-jwt.

composer require firebase/php-jwt

Ejemplo:

<?php

use Firebase\JWT\JWT;

$ssoKey = getenv('TIENDUP_SSO_KEY');
$tiendupSsoUrl = 'https://dominio-del-sitio.com/sso';

if (empty($ssoKey)) {
throw new \RuntimeException('SSO Key not configured');
}

$now = time();

$payload = array(
'email' => $user->email,
'name' => $user->name,
'last_name' => $user->last_name,
'iat' => $now,
'exp' => $now + 300
);

$jwt = JWT::encode($payload, $ssoKey, 'HS256');

$url = $tiendupSsoUrl . '?' . http_build_query(array(
'jwt' => $jwt
));

header('Location: ' . $url);
exit;

Node.js

Puedes utilizar la biblioteca jsonwebtoken.

npm install jsonwebtoken

Ejemplo:

const jwt = require('jsonwebtoken');

const ssoKey = process.env.TIENDUP_SSO_KEY;
const tiendupSsoUrl = 'https://dominio-del-sitio.com/sso';

if (!ssoKey) {
throw new Error('SSO Key not configured');
}

const now = Math.floor(Date.now() / 1000);

const payload = {
email: user.email,
name: user.name,
last_name: user.lastName,
iat: now,
exp: now + 300
};

const token = jwt.sign(payload, ssoKey, {
algorithm: 'HS256'
});

const url = new URL(tiendupSsoUrl);
url.searchParams.set('jwt', token);

// Ejemplo utilizando Express.
response.redirect(302, url.toString());

Si no utilizas Express, debes devolver una redirección HTTP hacia el valor de url.toString().

Python

Puedes utilizar la biblioteca PyJWT.

pip install PyJWT

Ejemplo:

import os
import time
import jwt

from urllib.parse import urlencode
from flask import redirect

sso_key = os.environ["TIENDUP_SSO_KEY"]
tiendup_sso_url = "https://dominio-del-sitio.com/sso"

now = int(time.time())

payload = {
"email": user.email,
"name": user.name,
"last_name": user.last_name,
"iat": now,
"exp": now + 300
}

token = jwt.encode(
payload,
sso_key,
algorithm="HS256"
)

# Compatibilidad con versiones anteriores de PyJWT.
if isinstance(token, bytes):
token = token.decode("utf-8")

url = tiendup_sso_url + "?" + urlencode({
"jwt": token
})

# Ejemplo utilizando Flask.
return redirect(url, code=302)

Si no utilizas Flask, debes devolver una redirección HTTP hacia el valor almacenado en url.

En todos los casos, la SSO Key debe permanecer en el backend y la URL de destino debe utilizar HTTPS.

Comportamientos esperados

Una vez que el SSO está configurado y activo, Tiendup funciona de la siguiente manera:

  • El inicio de sesión y el registro tradicionales de Tiendup son reemplazados por las URLs configuradas para el sistema externo.

  • Si un cliente intenta iniciar sesión o registrarse, Tiendup lo redirige al sistema externo.

  • Los clientes deben iniciar sesión antes de agregar productos al carrito, acceder a contenidos o continuar con una compra.

  • Cuando Tiendup recibe un JWT válido, inicia una sesión normal para el cliente dentro del sitio.

  • Si el correo electrónico incluido en el JWT no existe en el negocio, Tiendup crea automáticamente un nuevo cliente activo.

  • Si el correo electrónico ya existe, Tiendup actualiza el nombre y el apellido del cliente con los datos recibidos e inicia su sesión.

  • Si el correo electrónico cambia en el sistema externo, Tiendup puede crear un nuevo cliente, ya que el correo electrónico es el identificador utilizado por esta versión de la integración.

  • Después de iniciar la sesión, Tiendup redirige al cliente a la URL de retorno configurada. Si no se definió una URL de retorno, lo envía a la página principal del sitio.

  • Si el JWT no puede validarse o el cliente no puede procesarse, Tiendup redirige al usuario a la URL de error configurada. Si no existe una URL de error, muestra una página 404.

  • Si el SSO está inactivo, Tiendup utiliza nuevamente su sistema tradicional de registro e inicio de sesión.

Los clientes creados mediante SSO no reciben una contraseña conocida. Si posteriormente se desactiva el SSO y necesitan utilizar el inicio de sesión tradicional, deberán establecer una contraseña mediante el proceso de recuperación de acceso.

Manejo de errores

Cuando Tiendup no puede completar el inicio de sesión, redirige al cliente a la URL de error configurada y agrega el parámetro error con un código general.

Por ejemplo:

https://tu-sistema.com/error?error=authentication_failed

Tiendup puede enviar los siguientes códigos:

Código

Significado

missing_token

Tiendup no recibió el JWT requerido.

authentication_failed

El JWT no pudo validarse o el cliente no pudo procesarse.

Tiendup no envía información técnica ni un mensaje descriptivo adicional. Tu sistema debe interpretar el código recibido y mostrar un mensaje adecuado al cliente.

Por ejemplo:

No fue posible iniciar tu sesión. Inténtalo nuevamente o comunícate con el administrador.

Si NO configuras una URL de error, Tiendup mostrará una página 404 cuando no pueda completar el proceso de autenticación.

Checklist de comprobación

Antes de activar el SSO para todos tus clientes, comprueba los siguientes puntos:

Configuración

  • La SSO Key está almacenada de forma segura en el backend de tu sistema.

  • Las URLs de inicio de sesión, registro, error y retorno utilizan HTTPS.

  • La URL de inicio de sesión dirige correctamente a tu sistema externo.

  • La URL de registro funciona correctamente o utiliza la URL de inicio de sesión como alternativa.

Generación del JWT

  • El JWT se genera únicamente después de autenticar al usuario.

  • El token está firmado con la SSO Key y el algoritmo HS256.

  • El payload incluye email, name, iat y exp.

  • iat contiene la fecha de emisión actual.

  • exp no supera los cinco minutos desde la fecha de emisión.

  • El correo electrónico enviado tiene un formato válido.

Inicio de sesión

  • Un JWT válido inicia correctamente la sesión en Tiendup.

  • Un usuario nuevo se crea automáticamente como cliente.

  • Un usuario existente inicia sesión sin crear una cuenta duplicada.

  • El nombre y el apellido se actualizan con los datos recibidos.

  • Después del acceso, el cliente es enviado a la URL de retorno o a la página principal del sitio.

Validaciones y errores

  • Un token vencido es rechazado.

  • Un token sin exp es rechazado.

  • Un token con una firma incorrecta es rechazado.

  • Un token emitido en el futuro es rechazado.

  • Un token con una vigencia superior a cinco minutos es rechazado.

  • Un token sin correo electrónico es rechazado.

  • Los errores redirigen correctamente a la URL configurada.

  • La URL de error recibe missing_token o authentication_failed, según corresponda.

  • Si no existe una URL de error, Tiendup muestra una página 404.

Restricciones de acceso

  • Un cliente sin sesión no puede agregar productos al carrito.

  • Un cliente sin sesión no puede acceder a contenidos protegidos.

  • Un cliente sin sesión no puede continuar con el pago.

  • Al intentar iniciar sesión o registrarse, el cliente es enviado al sistema externo.

  • Al desactivar el SSO, Tiendup vuelve a utilizar el inicio de sesión y el registro tradicionales.


Recomendaciones de seguridad

Para proteger las cuentas de tus clientes y la SSO Key, sigue estas recomendaciones:

  • Genera el JWT únicamente desde el backend, después de autenticar correctamente al usuario.

  • Utiliza una biblioteca JWT confiable y mantenida. No construyas manualmente el encabezado, el payload y la firma.

  • Guarda la SSO Key en una variable de entorno o en un gestor de secretos. No la incluyas directamente en el código fuente.

  • No expongas la SSO Key en JavaScript, aplicaciones móviles, repositorios, mensajes de error ni respuestas enviadas al navegador.

  • Utiliza HTTPS en todas las URLs relacionadas con la integración.

  • Genera un nuevo JWT para cada intento de acceso y establece una vigencia máxima de cinco minutos.

  • Mantén correctamente sincronizadas la fecha y la hora del servidor que genera los tokens.

  • No guardes ni registres el JWT completo en logs, herramientas de analítica o servicios externos.

  • Incluye únicamente los datos necesarios para identificar y actualizar al cliente. Nunca envíes contraseñas dentro del JWT.

  • Si sospechas que la SSO Key fue expuesta, desactiva temporalmente el SSO y solicita o genera una nueva clave antes de volver a activarlo.

  • Realiza las pruebas de integración en un negocio o entorno de prueba antes de activar el SSO para clientes reales.

¿Necesitas ayuda?

Si necesitas ayuda para configurar o integrar el SSO, escríbenos a través de nuestro canal de soporte.

¿Ha quedado contestada tu pregunta?