Cómo configurar la autenticación SSO para Quick Builder

Última actualización: 2026-03-03

Cómo configurar la autenticación SSO para Quick Builder

Quick Builder autentica a los usuarios a través de SSO basado en JWT. Su servidor genera un JWT firmado que contiene la identidad del usuario y luego lo redirige al motor de reservas de Xeni. Este artículo cubre cómo crear, firmar y entregar tokens JWT.

Requisitos de JWT

Todos los tokens JWT para Quick Builder deben cumplir estos requisitos:

RequisitoValor
AlgoritmoHS256 (HMAC con SHA-256)
Longitud de la clave secreta32 caracteres mínimo
Vencimiento máximo30 minutos desde el momento de la emisión

Reclamaciones JWT requeridas

Cada token debe incluir los siguientes reclamos en su carga útil:

ReclamoTipoDescripción
isscadenaIdentificador del emisor: el dominio o nombre de su aplicación
iatnúmeroEmitido en el momento como marca de tiempo Unix (segundos desde la época)
expnúmeroTiempo de caducidad como marca de tiempo de Unix (debe ser dentro de los 30 minutos de iat)
useridcadenaIdentificador único para el usuario en su sistema
emailcadenaDirección de correo electrónico del usuario
firstnamecadenaNombre del usuario
last_namecadenaApellido del usuario

Ejemplo de carga útil JWT

JSON
{
  "iss": "partner-app.example.com",
  "iat": 1740000000,
  "exp": 1740001800,
  "userid": "usrabc123",
  "email": "jane.doe@example.com",
  "first_name": "Jane",
  "last_name": "Doe"
}

Generando un token JWT

Ejemplo de Node.js

JAVASCRIPT
const jwt = require('jsonwebtoken');

const SECRET_KEY = 'your-secret-key-at-least-32-chars!'; // 32+ characters

function generateQuickBuilderToken(user) {
const payload = {
iss: 'partner-app.example.com',
iat: Math.floor(Date.now() / 1000),
exp: Math.floor(Date.now() / 1000) + (30 * 60), // 30 minutes
user_id: user.id,
email: user.email,
first_name: user.firstName,
last_name: user.lastName
};

return jwt.sign(payload, SECRET_KEY, { algorithm: 'HS256' });
}

Ejemplo de Python

PYTHON
import jwt
import time

SECRET_KEY = 'your-secret-key-at-least-32-chars!' # 32+ characters

def generatequickbuilder_token(user):
now = int(time.time())
payload = {
'iss': 'partner-app.example.com',
'iat': now,
'exp': now + (30 * 60), # 30 minutes
'user_id': user['id'],
'email': user['email'],
'firstname': user['firstname'],
'lastname': user['lastname']
}
return jwt.encode(payload, SECRET_KEY, algorithm='HS256')

Redirigir al usuario

Una vez que tenga un token firmado, redirija al usuario a la URL de SSO de Xeni:

https://your-xeni-domain.com/sso?token={JWTTOKEN}&navigateTo={ENCODEDDESTINATION}

Ejemplo de redireccionamiento (Node.js)

JAVASCRIPT
app.get('/launch-booking', (req, res) => {
  const token = generateQuickBuilderToken(req.user);
  const destination = encodeURIComponent('/hotels/search');
  const ssoUrl = https://your-xeni-domain.com/sso?token=${token}&navigateTo=${destination};
  res.redirect(ssoUrl);
});

Mejores prácticas de seguridad

  • Nunca expongas tu clave secreta en el código del lado del cliente. La firma JWT debe realizarse en su servidor.
  • Utilice una clave secreta segura con al menos 32 caracteres. Se recomienda una clave generada aleatoriamente.
  • Mantenga el vencimiento breve. El máximo permitido es 30 minutos, pero valores más cortos (5-10 minutos) reducen la ventana de riesgo si se intercepta un token.
  • Generar un nuevo token para cada redireccionamiento. No reutilice tokens entre sesiones.
  • Almacene el secreto de forma segura utilizando variables de entorno o un administrador de secretos; nunca lo codifique en archivos fuente.

Solución de problemas

ProblemaCausaSolución
Token rechazadoLa clave secreta no coincideVerificar que la clave secreta coincida con lo configurado en el panel de administración de Xeni
Token caducadoexp reclamo está en el pasadoGenere un token nuevo inmediatamente antes de redirigir
Algoritmo no válidoNo utilizar HS256Asegúrese de que su biblioteca JWT esté configurada para usar HS256
Reclamaciones faltantesReclamación requerida omitidaVerifique que los siete reclamos requeridos estén presentes en la carga útil

Próximos pasos

Una vez que pueda generar tokens JWT válidos, deberá crear un punto final de validación al que Xeni llamará para verificar esos tokens.

¿Te resultó útil este artículo?