Helpers d'auth & flux hybrides (server + client)
Helpers d'auth & flux hybrides (server + client)
Guide pratique pour orchestrer sessions, OAuth et authentification par clé
Référence d’utilisation pour les utilitaires d’authentification et les composants clients : combiner sessions utilisateur, connexions OAuth (incl. GitHub App) et authentification par clé dans des flux hybrides (iframe signup, callbacks côté client).
Ce que couvre cette page
Connexion via providers OAuth
Guides pas à pas pour démarrer, gérer les callbacks client et traiter la création automatique de comptes depuis GitHub/GitLab.
Flux hybrides & helpers serveur
Utiliser une authentification hybride qui accepte session utilisateur ET clé d’API, avec gestion des erreurs et fallback.
Composants front pour tokens
Patterns pratiques pour extraire, stocker temporairement et valider tokens OAuth côté client (iframe signup, redirections, callbacks).
Intro Ce guide explique comment utiliser les utilitaires d’authentification et les composants front pour orchestrer :
- l’inscription par formulaire,
- les connexions via OAuth (GitHub / GitLab) y compris les scénarios GitHub App,
- l’authentification par clé d’API,
- et les patterns hybrides qui mélangent sessions et clés (par ex. iframe signup + callbacks client).
Vous y trouverez des workflows détaillés, des conseils pratiques, des pièges courants et des exemples d’implémentation orientés “comment l’utiliser” (pas l’implémentation technique interne).
Inscription par formulaire (flux utilisateur classique)
Étape 1 — Ouvrir le formulaire d'inscription
Afficher la page d’inscription dans l’interface (champ email, mot de passe, langue, checkbox conditions). Proposer aussi un bouton d’inscription via provider (GitHub / GitLab).
Étape 2 — Remplir et valider le formulaire
L’utilisateur saisit email, mot de passe et éventuellement langue. Valider côté client les champs (format email, longueur de mot de passe, acceptation des conditions).
Étape 3 — Soumettre et attendre la confirmation
Après soumission, afficher un loader et un message d’attente. Le backend crée le compte, renvoie confirmation; si un bonus de crédits est configuré, il est attribué automatiquement.
Étape 4 — Redirection ou affichage d'état
En cas de succès, rediriger vers le tableau de bord ou afficher une boîte de confirmation. En cas d’erreur (email déjà utilisé), afficher un message clair avec actions possibles (connexion / récupération mot de passe).
Étape 5 — Bonnes pratiques post-inscription
Envoyer un email de bienvenue si disponible et proposer la configuration initiale (connecter un dépôt, créer un premier projet). Pour l’UX mobile, afficher le lien pour ouvrir l’app native si existante.
Attribuer des crédits de bienvenue
Pensez à informer visuellement l’utilisateur lorsqu’un crédit initial est octroyé (bandeau, notification). Cela réduit l’incertitude et augmente l’engagement après inscription.
Connexion via OAuth (GitHub / GitLab) — côté client → flux complet
Étape 1 — Déclencher le provider depuis l'UI
Bouton OAuth : l’utilisateur clique sur “Se connecter avec GitHub” ou “GitLab”. Préparez un état local indiquant l’intention de redirection (pour revenir au bon écran après).
Étape 2 — Redirection vers le provider
Lancer la redirection vers la page d’autorisation du provider. Si vous utilisez PKCE, générez et stockez le code_verifier côté client avant la redirection.
Étape 3 — Récupérer le callback côté client
Après autorisation, le provider redirige vers votre application avec paramètres (code, state, éventuellement tokens). Le client doit extraire ces paramètres et les transmettre au serveur ou les traiter selon votre flow.
Étape 4 — Création/connexion de l'utilisateur
Le serveur vérifie les informations du provider. Si l’email associé n’existe pas, le système peut créer automatiquement un compte et éventuellement attribuer des crédits de bienvenue.
Étape 5 — Finaliser et établir la session
Une fois authentifié, établir une session utilisateur. Le client récupère l’état de session et redirige vers la destination initiale prévue (par ex. tableau de bord).
Étape 6 — Gérer erreurs et emails manquants
Si le provider ne renvoie pas l’email (cas possible avec GitHub), ne bloquez pas l’utilisateur : proposez un écran secondaire qui demande un email ou complète le profil.
Anticiper l'email manquant
Certains providers (ou configurations d’utilisateur) n’exposent pas l’email. Préparez un écran de “complétion de profil” post-OAuth pour récupérer l’email et finaliser l’inscription.
Connexion via GitHub App (flux App → login JWT signé)
Étape 1 — Installation de l'App GitHub
L’administrateur installe l’application GitHub sur le dépôt/organisation. Après installation, l’App peut émettre un jeton d’authentification provisoire côté serveur.
Étape 2 — Génération d'un jeton de login signé
Le serveur génère un jeton d’authentification signé (token court) qui atteste qu’une installation GitHub correspond bien à un utilisateur. Ce jeton est utilisé pour initier une session login sans mot de passe externe.
Étape 3 — Utilisation du jeton pour se connecter
Le client ou une intégration interne utilise le jeton signé pour demander une session. Le serveur vérifie la signature et associe l’identité GitHub à l’utilisateur existant.
Étape 4 — Création automatique si nécessaire
Si aucune correspondance utilisateur n’existe pour l’email GitHub retourné, le système peut créer un compte automatiquement et appliquer les règles d’attribution de crédits.
Étape 5 — Sécurité et durée de vie
Limitez la durée de vie des jetons signés et consignez l’usage (logs). Préparez un mécanisme de révocation si l’installation est désinstallée côté GitHub.
Jetons signés : durée et révocation
N’utilisez jamais des jetons de longue durée sans mécanisme de révocation. Si une installation est retirée, révoquez immédiatement les jetons associés et forcez la re-authentification.
Authentification par clé d'API (API key) — pattern d'usage côté client et serveur
Étape 1 — Génération et remise de la clé
L’utilisateur génère une clé d’API depuis son tableau de bord. Affichez la clé une seule fois et incitez à la stocker de façon sécurisée.
Étape 2 — Utilisation côté client ou intégration
Pour les intégrations machine-to-machine, inclure la clé dans l’en-tête d’authentification ou dans le champ dédié. La clé doit être traitée comme un secret (ne pas la logguer).
Étape 3 — Priorité d'authentification
Lorsqu’une requête contient à la fois une session et une clé, vous pouvez prioriser la clé (flux server-first) ou prioriser la session selon votre règle métier. Le pattern hybride détaillé ci‑dessous montre une stratégie courante.
Étape 4 — Rotation et révocation
Permettez la révocation et la rotation des clés facilement depuis l’interface : révoquer doit révoquer instantanément l’accès.
Étape 5 — Surveillance
Surveillez l’usage des clés (taux, abuse patterns) et appliquez des quotas/alertes pour prévenir la compromission.
Pattern hybride : orchestration session + API key (comportement recommandé)
Étape 1 — Vérifier d'abord la clé d'API
Si une clé est fournie avec la requête, validez-la immédiatement. Si elle est valide, traitez la requête au nom de l’utilisateur associé à la clé.
Étape 2 — Si pas de clé, vérifier la session
En l’absence de clé, tomber back sur l’authentification par session utilisateur. Si la session est valide, poursuivre normalement.
Étape 3 — Retour d'erreur clair
Si une clé invalide est fournie, renvoyer une erreur explicite indiquant que la clé est invalide plutôt qu’un message générique de “non authentifié”.
Étape 4 — Enregistrer le type d'auth
Pour le suivi et la sécurité, stocker (dans le contexte de traitement) le type d’authentification utilisé : “session” ou “api_key”.
Étape 5 — UX pour endpoints publics
Pour les routes publiques qui acceptent les deux, afficher un message côté client expliquant comment préférer l’une ou l’autre méthode selon le cas d’utilisation (interactif vs automatisé).
Priorité explicite pour éviter les ambiguïtés
Documentez la priorité entre session et clé pour les intégrateurs. Une politique claire (ex : “la clé prime si présente”) évite des comportements inattendus.
Flux iframe Signup + callbacks client (pattern pour Widgets/iframes)
Étape 1 — Héberger un iframe de signup
Intégrer une iframe qui affiche le formulaire d’inscription ou un bouton OAuth. L’iframe doit être conçue pour envoyer un message postMessage vers le parent une fois l’action terminée.
Étape 2 — Lancer l'OAuth depuis l'iframe (optionnel)
L’iframe peut déclencher le flux OAuth ; à la fin, le serveur redirige vers une page de callback dédiée qui communique avec l’iframe via la session ou via postMessage.
Étape 3 — Communiquer le résultat au parent
Après création/connexion, l’iframe envoie un message sécurisé au parent contenant le statut (succès/erreur) et éventuellement un token temporaire. Le parent valide l’origine du message avant toute action.
Étape 4 — Finaliser côté parent
Le parent peut rafraîchir sa session, fermer l’iframe et rediriger l’utilisateur vers l’état post-signup. Si un jeton temporaire est transmis, l’utiliser uniquement pour établir une session côté client, puis le supprimer.
Étape 5 — Sécurité cross-origin
Toujours vérifier l’origine du postMessage. N’acceptez des messages que depuis les origines explicitement autorisées et ne transmettez jamais d’informations sensibles non chiffrées.
Risques liés aux iframes et postMessage
Les iframes exposent des vecteurs de sécurité (clickjacking, postMessage spoofing). Validez systématiquement l’origine des messages et limitez la durée de vie de tout token transmis via postMessage.
Recommandation : privilégier la session utilisateur via cookie/gestion de session. Utiliser OAuth pour simplifier l’inscription et proposer la création automatique de compte. Clés d’API réservées aux intégrations.
Avant : confusion entre sessions et clés, erreurs génériques “non authentifié”, difficultés pour les intégrations machine-to-machine.
Après : politique claire (clé prime ou session prime), retours d’erreur explicites, prise en charge automatique de la création d’utilisateur via OAuth, UX d’iframe sécurisée.
Messages d'erreur explicites améliorent le support
Fournir des messages d’erreur précis (clé invalide, clé expirée, email manquant) facilite le debugging côté intégrateur et réduit les tickets support.
Frequently Asked Questions
Pièges fréquents à éviter
- Ne stockez pas de clés d’API ou de tokens visibles dans des logs ou dans le stockage local non chiffré.
- N’acceptez pas aveuglément les messages postMessage : vérifiez l’origine.
- N’ignorez pas la nécessité de révoquer un jeton après suppression d’une installation GitHub.
Besoin d'exemples d'implémentation spécifiques ?
Si vous souhaitez des exemples concrets d’implémentation côté intégration (séquences UI complètes, gestion d’états PKCE, modèles d’écran pour email manquant, templates de messages d’erreur), indiquez le scénario précis (ex : “widget d’iframe pour signup” ou “flow GitHub App pour installations d’organisation”) et je fournis des pas détaillés adaptés.
Prêt à intégrer ?
Passez à la page d’intégration pour obtenir des séquences UI, templates de messages et checklist de sécurité à déployer.
OAuth
Providers pris en charge
Session + API Key
Modes d'auth supportés
GitHub App
Flux App & login signé