Guide d’Intégration Vivoldi SSO (Single Sign-On)

Ce guide est une documentation technique destinée aux développeurs souhaitant intégrer de manière sécurisée l’IdP (Identity Provider) de leur organisation avec Vivoldi via une authentification JWT basée sur RS256.

Il explique étape par étape la génération de paires de clés RSA, la configuration de JWKS (JSON Web Key Set) ainsi que l’émission de tokens JWT signés, avec des exemples pratiques pour les environnements Linux.

Rôle du Fichier JWKS & Processus de Vérification

JWKS (JSON Web Key Set) est un format standard utilisé pour fournir les informations de clé publique nécessaires à la vérification des signatures JWT.
Vivoldi récupère la Public Key depuis l’endpoint JWKS enregistré afin de vérifier la signature et la validité du token JWT.

Même dans des environnements avec Key Rotation, les nouvelles clés publiques peuvent être distribuées de manière sécurisée. Comme seule la Public Key est partagée, l’authentification peut être mise en place sans exposer la Private Key à des systèmes externes.

1. Génération des fichiers de clé de certificat

Pour émettre des tokens JWT avec l’algorithme RS256, une paire de clés RSA composée d’une Private Key et d’une Public Key est nécessaire.

La Private Key est utilisée pour signer les tokens JWT, tandis que la Public Key est distribuée via le fichier JWKS afin de permettre aux serveurs Vivoldi de vérifier la signature. Pour une sécurité renforcée, une longueur de clé d’au moins 3072 bits est recommandée.

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. Définir les autorisations du fichier

Le fichier de Private Key doit être utilisé uniquement au sein de l’environnement serveur, et les permissions du système de fichiers doivent être limitées au strict minimum afin d’éviter tout accès inutile.

Si la Private Key est compromise, un attaquant pourrait générer des tokens JWT valides et compromettre l’ensemble du système d’authentification SSO.

⚠️ Attention : Ne téléversez jamais de Private Key dans des référentiels publics ou espaces de stockage partagés tels que des dépôts Git, des e-mails ou des services cloud. Dans les pipelines CI/CD, gérez-les via des variables d’environnement ou 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. Création et enregistrement du fichier JWKS

Sur la page [Developer → SSO Settings] du tableau de bord Vivoldi, le téléversement du fichier sso_public.pem génère automatiquement le fichier jwks.json.

Le fichier jwks.json généré suit le standard RFC 7517 JSON Web Key Set et doit être accessible publiquement via le chemin suivant.

https://yourdomain.com/.well-known/jwks.json
Lors de la vérification des tokens JWT, les serveurs Vivoldi récupèrent la clé publique depuis cet endpoint afin de vérifier la signature. Si le chemin est incorrect ou si l’endpoint ne répond pas, la connexion échouera.

jwks.json example


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

Items

kty string
Abréviation de Key Type. Dans le SSO, une clé publique au format RSA est utilisée.
use string
Indique l’utilisation de la clé. “sig” signifie qu’elle est utilisée pour la signature.
kid string
Key ID — identifiant permettant de distinguer les versions de clé. Exemple : vivoldi-sso-20251008
alg string
Indique l’algorithme de signature utilisé. Vivoldi SSO prend uniquement en charge RS256 (RSA + SHA-256) pour une sécurité renforcée.
n string
La valeur du modulus de la clé publique RSA, une longue chaîne encodée en Base64URL.
Cette valeur est utilisée avec sso_private.pem lors de la génération des jetons d’authentification.
e string
La valeur de l’exposant de la clé publique RSA.
En général, elle est fixée à AQAB (65537).

4. Exemple de génération de jeton JWT

Ce guide explique comment générer des tokens JWT basés sur RS256 et lancer le processus de connexion Vivoldi SSO dans des environnements Java, PHP et Node.js.

Avant d’émettre un token JWT, un compte utilisateur Vivoldi lié au compte de l’organisation doit déjà être enregistré.
Veuillez d’abord enregistrer l’utilisateur depuis la page [Paramètres → Gestion des utilisateurs] avant de continuer.

💡 Fonction réservée aux entreprises

Vivoldi propose des fonctionnalités Single Sign-On (SSO) pour les clients Enterprise.
En intégrant le système d’authentification de votre organisation, vous pouvez centraliser les politiques de sécurité et optimiser le contrôle des accès à l’échelle de l’entreprise.

Pour toute demande d’accompagnement ou de déploiement, veuillez nous contacter via la page [Contact].

Après le passage à l’offre Enterprise, des exemples de code d’intégration SSO par langage seront directement accessibles depuis le tableau de bord après connexion.

✨ Authentification unifiée de niveau entreprise

Le SSO (Single Sign-On) connecte le système d’authentification de votre organisation à Vivoldi,
permettant à tous les utilisateurs d’accéder aux services en toute sécurité avec une seule connexion.

La gestion centralisée des comptes, les politiques de sécurité renforcées et l’automatisation du contrôle d’accès pour une sécurité et une efficacité organisationnelles accrues sont disponibles avec l’offre Enterprise.

Passer à l’offre Enterprise