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)

1

É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).

2

É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).

3

É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.

4

É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).

5

É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

1

É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).

2

É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.

3

É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.

4

É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.

5

É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).

6

É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é)

1

É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.

2

É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.

3

É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.

4

É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.

5

É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

1

É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.

2

É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).

3

É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.

4

É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.

5

É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é)

1

É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é.

2

É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.

3

É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é”.

4

É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”.

5

É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)

1

É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.

2

É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.

3

É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.

4

É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.

5

É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.

Recommandation : utiliser des clés d’API courtes ou tokens de service avec rotation. Ne pas exposer les clés dans le navigateur public.

Recommandation : utiliser le flux GitHub App pour installer l’accès aux dépôts. Émettre des jetons signés temporaires pour login spécifique et prévoir révocation à la désinstallation.

Recommandation : utiliser un flux iframe + postMessage sécurisé, et prévoir un flow de fallback pour terminer l’inscription si l’email est manquant.

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é

Frequently Asked Questions (suite)