Guía de Integración de Vivoldi SSO (Single Sign-On)

Esta guía es una referencia técnica para desarrolladores que desean integrar de forma segura el IdP (Identity Provider) de su organización con Vivoldi mediante autenticación JWT basada en RS256.

Incluye ejemplos prácticos para entornos Linux y explica paso a paso la generación de pares de claves RSA, la configuración de JWKS (JSON Web Key Set) y la emisión de tokens JWT firmados.

Función del Archivo JWKS & Flujo de Verificación

JWKS (JSON Web Key Set) es un formato estándar utilizado para proporcionar información de claves públicas destinadas a la verificación de firmas JWT.
Vivoldi obtiene la Public Key desde el endpoint JWKS registrado para validar la firma y la expiración del token JWT.

Incluso en entornos con Key Rotation, las nuevas claves públicas pueden distribuirse de forma segura. Como solo se comparte la Public Key, es posible configurar la autenticación sin exponer la Private Key a sistemas externos.

1. Generar archivos de claves de certificado

Para emitir tokens JWT utilizando el algoritmo RS256, se requiere un par de claves RSA compuesto por una Private Key y una Public Key.

La Private Key se utiliza para firmar los tokens JWT, mientras que la Public Key se distribuye mediante el archivo JWKS para que los servidores de Vivoldi puedan verificar la firma. Por motivos de seguridad, se recomienda una longitud mínima de 3072 bits.

Linux Terminal


# Private Key Generation (RSA 3072-bit, PKCS#1)
$ openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:3072 -out sso_private.pem

# Public Key Extraction (X.509 PEM)
$ openssl rsa -in sso_private.pem -pubout -out sso_public.pem

2. Configurar permisos del archivo

El archivo de Private Key debe utilizarse únicamente dentro del servidor, y los permisos del sistema de archivos deben limitarse al mínimo necesario para evitar accesos innecesarios.

Si la Private Key se ve comprometida, un atacante podría generar tokens JWT válidos y comprometer todo el sistema de autenticación SSO.

⚠️ Advertencia: Nunca suba Private Keys a repositorios públicos o sistemas de almacenamiento compartido, como repositorios Git, correos electrónicos o servicios de almacenamiento en la nube. En entornos CI/CD, adminístrelas mediante variables de entorno o un Secret Manager.

Linux Terminal


# Private Key: Owner-only read access (600 recommended)
$ chmod 600 sso_private.pem

# Public Key: Set to read-only (644)
$ chmod 644 sso_public.pem

# Change the owner to the application execution account when necessary (e.g., www-data)
$ chown www-data:www-data sso_*.pem

3. Crear y registrar el archivo JWKS

En la página [Developer → SSO Settings] del panel de Vivoldi, al cargar el archivo sso_public.pem, el archivo jwks.json se genera automáticamente.

El archivo jwks.json generado sigue el estándar RFC 7517 JSON Web Key Set y debe publicarse para acceso externo en la siguiente ruta.

https://yourdomain.com/.well-known/jwks.json
Durante la validación de tokens JWT, los servidores de Vivoldi obtienen la clave pública desde este endpoint para verificar la firma. Si la ruta es incorrecta o el endpoint no responde, el inicio de sesión fallará.

jwks.json example


{
    "keys": [
        {
            "kty": "RSA",
            "use": "sig",
            "kid": "vivoldi-sso-20251008",
            "alg": "RS256",
            "n": "AN3V-5RxI7ekeBtc5N66yHzmhib_5ES5i3ZYoU4znkNh...",
            "e": "AQAB"
        }
    ]
}

Items

kty string
Abreviatura de Key Type. En SSO se utiliza una clave pública en formato RSA.
use string
Indica el propósito de la clave. “sig” significa que se usa para firma (signature).
kid string
ID de la clave, utilizado para identificar la versión de la clave. Ejemplo: vivoldi-sso-20251008
alg string
Indica el algoritmo de firma utilizado. Vivoldi SSO admite únicamente RS256 (RSA + SHA-256) para garantizar una seguridad avanzada.
n string
Valor del módulo (modulus) de la clave pública RSA, una cadena larga codificada en Base64URL.
Se usa junto con sso_private.pem al generar los tokens de autenticación.
e string
Valor del exponente (exponent) de la clave pública RSA.
Normalmente se fija en AQAB (65537).

4. Ejemplo de generación de token JWT

Esta guía explica cómo generar tokens JWT basados en RS256 y cómo iniciar el flujo de inicio de sesión SSO de Vivoldi en entornos Java, PHP y Node.js.

Antes de emitir tokens JWT, debe existir una cuenta de usuario de Vivoldi vinculada a la cuenta de la organización.
Primero registre al usuario en la página [Configuración → Gestión de Usuarios] antes de continuar.

💡 Función exclusiva para empresas

Vivoldi ofrece funciones de Single Sign-On (SSO) para clientes Enterprise.
Al integrarse con el sistema de autenticación de su organización, es posible centralizar las políticas de seguridad y optimizar el control de acceso en toda la empresa.

Si desea recibir asesoramiento sobre la implementación, contáctenos a través de la página [Contacto].

Después de actualizar al plan Enterprise, podrá consultar directamente desde el panel ejemplos de integración SSO por idioma una vez iniciada la sesión.

✨ Autenticación unificada de nivel empresarial

SSO (inicio de sesión único) conecta el sistema de autenticación de tu organización con Vivoldi,
permitiendo que todos los usuarios accedan de forma segura al servicio con un solo inicio de sesión.

La gestión centralizada de cuentas, las políticas de seguridad avanzadas y la automatización del control de acceso para mayor seguridad y eficiencia operativa están disponibles en el plan Enterprise.

Actualiza al plan Enterprise