Full-Stack • Authentification • SSO

My Portal – Hub SSO pour applications multi-domaines

Hub SSO et fournisseur d'identité de qualité professionnelle pour l'authentification centralisée et le contrôle d'accès granulaire dans un écosystème multi-domaines.

14 juin 2025

My Portal – Hub SSO pour applications multi-domaines

Contexte

Mon portail a été développé comme solution d'authentification centralisée pour gérer l'accès à un écosystème d'applications en sous-domaines. Avec l'augmentation du volumes de mes projets — traceur GPS, tableaux de bord — le besoin d'un fournisseur d'identité unifié est devenu critique pour éviter des bases utilisateurs fragmentées et des sessions de connexion redondantes.

L'objectif était de construire un hub SSO sécurisé permettant aux utilisateurs de s'authentifier une seule fois et de naviguer entre les services tout en conservant un contrôle granulaire et basé sur les rôles.


Architecture technique et sécurité

Le portail est conçu avec Next.js 15, React 19 et Supabase, en privilégiant une architecture sécurité-first.

Page d'accueil

Système d'invitation par tokens

Pour maintenir un environnement contrôlé et sur invitation, j'ai développé un flux de rachat de tokens personnalisé :

  • Génération : Les super-admins peuvent générer des tokens hachés de 32 caractères avec dates d'expiration et limites d'utilisation
  • Rachat : Les utilisateurs rachètent les tokens via une page dédiée, qui accorde automatiquement les permissions par application à l'activation du compte
  • Sécurité : La logique des tokens est exécutée via des fonctions PostgreSQL (RPC) pour garantir que la logique d'autorisation sensible reste strictement côté serveur

Infrastructure renforcée

La gestion des identités est assurée par PostgreSQL Row Level Security (RLS). Les utilisateurs n'accèdent qu'à leurs propres profils, tandis que les journaux d'audit administratifs enregistrent toutes les modifications sensibles pour la transparence et la sécurité.

Les applications externes reçoivent des tokens JWT à durée limitée avec des permissions spécifiques, permettant un accès API sécurisé sans exposer les identifiants.


Conformité et internationalisation

Construire un hub central impliquait de traiter la conformité et la localisation comme des priorités, et non comme des ajouts secondaires.

  • Internationalisation (i18n) : Support complet anglais et français avec routage par locale et métadonnées SEO optimisées par langue
  • Conformité RGPD : Système de consentement cookies granulaire pour les opt-in Google Analytics. Le suivi est strictement désactivé tant que l'utilisateur n'a pas donné son consentement explicite, conservé pendant 365 jours
  • Performance : Grâce à Next.js Turbopack et une gestion de session compatible SSR, les vérifications d'authentification n'introduisent pas de latence lors du passage entre sous-domaines

Flux principal

Après une seule connexion — par email ou Google OAuth — l'utilisateur arrive sur un tableau de bord présentant ses projets autorisés.

Lorsqu'un utilisateur tente d'accéder à une application comme PingTrail, le portail vérifie ses permissions en temps réel. S'il est autorisé, il est redirigé vers le sous-domaine avec une session partagée active, sans nouvelle authentification.


Stack technique

  • Frontend : Next.js 15 (App Router), React 19, TypeScript, Tailwind CSS, Jotai
  • Backend : Supabase (PostgreSQL, Auth, Edge Functions)
  • Sécurité : Politiques RLS, tokens JWT, Cloudflare Turnstile pour la protection anti-bots
  • Hébergement : Vercel

Bilan

Ce projet marque une transition des sites web par projet vers des systèmes orientés produit et pérennes. En centralisant l'authentification, la sécurité et la conformité dans un seul portail, je peux désormais déployer de nouveaux outils en étant assuré qu'ils sont immédiatement sécurisés et intégrés dans une expérience utilisateur unifiée.