KeySuiteTrousseau

Démarrage rapide

Intégrez le SSO Trousseau dans votre application en 15 minutes.

Prérequis

Avant de commencer, assurez-vous de disposer de :

  • Une application web prenant en charge OIDC (la plupart des frameworks proposent des bibliothèques pour cela)
  • HTTPS activé sur votre application (obligatoire en production)
  • Vos URI de redirection prêtes (l'URL vers laquelle Trousseau redirigera après l'authentification)

Étape 1 : Demandez vos identifiants

Contactez l'équipe KeySuite pour enregistrer votre application. Vous devrez fournir :

InformationExemple
Nom de l'applicationMy Hotel PMS
URL de productionhttps://app.myhotelpms.com
URL de staging (recommandé)https://staging.myhotelpms.com
URI(s) de redirectionhttps://app.myhotelpms.com/auth/callback
URI de redirection post-déconnexionhttps://app.myhotelpms.com/signed-out
Scopes demandésopenid email profile
Besoin de l'API de provisionnement ?Oui / Non

Vous recevrez :

# Configuration OIDC
OIDC_ISSUER=https://auth.keysuite.app/application/o/your-app-slug/
OIDC_CLIENT_ID=your-app-slug-oidc
OIDC_CLIENT_SECRET=your-generated-secret

# API de provisionnement (si demandée)
TROUSSEAU_API_URL=https://auth.keysuite.app
TROUSSEAU_API_TOKEN=your-api-token

Étape 2 : Configurez votre application

Ajoutez la configuration OIDC à votre application. La mise en place exacte dépend de votre framework, mais vous aurez besoin de ces valeurs :

ParamètreValeur
Issuerhttps://auth.keysuite.app/application/o/{your-slug}/
Client ID{your-slug}-oidc
Client SecretFourni par l'équipe KeySuite
Scopesopenid email profile
Response typecode
Grant typeauthorization_code
PKCEObligatoire (méthode S256)

Endpoint de découverte

Trousseau prend en charge la découverte OpenID Connect. Votre bibliothèque OIDC peut s'auto-configurer via :

https://auth.keysuite.app/application/o/{your-slug}/.well-known/openid-configuration

Cet endpoint retourne toutes les URLs nécessaires (autorisation, token, userinfo, JWKS, etc.).

Exemple : Next.js avec NextAuth

import NextAuth from "next-auth";

export const { handlers, signIn, signOut, auth } = NextAuth({
  providers: [
    {
      id: "trousseau",
      name: "Trousseau",
      type: "oidc",
      issuer: process.env.OIDC_ISSUER,
      clientId: process.env.OIDC_CLIENT_ID,
      clientSecret: process.env.OIDC_CLIENT_SECRET,
    },
  ],
});

Exemple : Express.js avec Passport

import passport from "passport";
import { Strategy as OIDCStrategy } from "passport-openidconnect";

passport.use(
  "trousseau",
  new OIDCStrategy(
    {
      issuer: process.env.OIDC_ISSUER,
      clientID: process.env.OIDC_CLIENT_ID,
      clientSecret: process.env.OIDC_CLIENT_SECRET,
      callbackURL: "https://app.yourapp.com/auth/callback",
      scope: "openid email profile",
    },
    (issuer, profile, done) => {
      // profile.id est l'identifiant utilisateur Trousseau (claim sub)
      // profile.emails[0].value est l'e-mail de l'utilisateur
      // profile.displayName est le nom complet
      return done(null, profile);
    }
  )
);

Étape 3 : Testez le flux de connexion

  1. Démarrez votre application
  2. Redirigez l'utilisateur vers l'endpoint d'autorisation de Trousseau (votre bibliothèque OIDC gère cela)
  3. L'utilisateur voit la page de connexion Trousseau
  4. Après l'authentification, Trousseau redirige vers votre URI de redirection avec un code d'autorisation
  5. Votre application échange le code contre des tokens
  6. Extrayez les informations utilisateur depuis l'ID token ou appelez l'endpoint UserInfo

Ce que voit l'utilisateur

Utilisateur existant (possède un mot de passe) :

  1. Page de connexion — saisit l'e-mail et le mot de passe
  2. Invite MFA (si configurée) — saisit le TOTP ou touche la clé de sécurité
  3. Redirigé vers votre application — authentifié

Nouvel utilisateur (première connexion) :

  1. Page de connexion — saisit l'e-mail
  2. Page de création de mot de passe — crée un mot de passe (min. 10 caractères, complexité imposée)
  3. Redirigé vers votre application — authentifié

Étape 4 : Traitez les tokens

Après une authentification réussie, vous recevez :

TokenUtilitéDurée de vie
ID TokenIdentité utilisateur (JWT avec claims)5 minutes
Access TokenAccès à l'API (si nécessaire)5 minutes
Refresh TokenObtention de nouveaux tokens30 jours

Extraction des informations utilisateur

L'ID token contient les claims de l'utilisateur. Décodez le JWT pour y accéder :

{
  "sub": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "email": "jean.dupont@hotel.com",
  "email_verified": true,
  "name": "Jean Dupont",
  "given_name": "Jean",
  "family_name": "Dupont",
  "picture": "https://..."
}

Vous pouvez aussi appeler l'endpoint UserInfo :

curl https://auth.keysuite.app/application/o/userinfo/ \
  -H "Authorization: Bearer {access_token}"

Étape 5 : Implémentez la déconnexion

Lorsque votre utilisateur se déconnecte, redirigez-le vers l'endpoint end-session de Trousseau pour clore la session SSO :

https://auth.keysuite.app/application/o/{your-slug}/end-session/?
  id_token_hint={id_token}&
  post_logout_redirect_uri=https://app.yourapp.com/signed-out

Cela garantit que l'utilisateur est déconnecté à la fois de votre application et de Trousseau.

Consultez le guide SSO Logout pour les détails sur le RP-Initiated et le Backchannel Logout.

Prochaines étapes