Comment ajouter une authentification à une application générée par IA
Un constructeur d'applications IA peut générer un écran de connexion en quelques secondes. Mais connecter les utilisateurs est la partie facile. La partie difficile et cruciale pour la sécurité est de s'assurer que chaque utilisateur authentifié ne peut accéder qu'à ses propres données. Ce guide explique comment ajouter une authentification à une application générée par IA de la bonne manière et signale les endroits exacts où le code généré a tendance à être insuffisant.
Authentification vs autorisation : connaître la différence
Ces deux mots se ressemblent et sont constamment confondus, y compris par les générateurs de code.
- Authentification répond à "qui êtes-vous ?" Il vérifie l'identité : un mot de passe correct, un lien magique valide, une connexion Google.
- Autorisation répond à "qu'avez-vous le droit de faire ?" Il décide si l'utilisateur connecté peut lire cette facture, modifier cet enregistrement ou supprimer le compte d'un autre utilisateur.
Voici le schéma le plus important dans cet article : les outils d'IA implémentent de manière fiable l'authentification et échouent fréquemment dans l'autorisation. Une application générée affichera volontiers un formulaire de connexion, émettra une session et vous saluera par votre nom, tout en permettant à tout utilisateur connecté de récupérer de n'importe qui les données en modifiant un ID dans l'URL. Gardez ce mode d'échec à l'esprit au fur et à mesure.
Choisissez une méthode d'authentification
Choisissez en fonction de vos utilisateurs et du modèle de menace, pas de ce que le générateur a par défaut.
- E-mail et mot de passe — familier et autonome, mais vous assumez la charge du hachage, des flux de réinitialisation et de la réponse aux violations.
- Liens magiques — une URL signée à usage unique envoyée par e-mail à l'utilisateur. Aucun mot de passe à fuir. Le compromis est la délivrabilité des e-mails et l'expiration courte du lien.
- OAuth / connexion sociale — "Se connecter avec Google/GitHub." Vous déléguez la gestion des identifiants à un fournisseur. Vérifiez l'e-mail retourné et l'état du compte ; ne faites jamais confiance à un jeton d'identification que vous n'avez pas validé.
- SSO (SAML / OIDC) — attendu par les acheteurs d'entreprise qui souhaitent un contrôle central. Habituellement un ajout ultérieur, mais concevez votre modèle d'utilisateur pour qu'il puisse s'intégrer.
Proposer plusieurs méthodes est acceptable. Assurez-vous simplement qu'elles aboutissent à un seul enregistrement utilisateur canonique, de sorte qu'une personne qui s'inscrit avec un mot de passe et utilise ensuite Google ne se retrouve pas avec deux comptes.
Sessions vs jetons
Une fois l'identité vérifiée, vous devez vous en souvenir entre les requêtes. Deux approches courantes :
- Sessions serveur — le serveur stocke l'état de session et remet au navigateur un identifiant de session opaque dans un cookie. Facile à révoquer : supprimer l'enregistrement côté serveur et la session est morte.
- Jetons sans état (JWT) — un jeton signé contient des revendications (ID utilisateur, expiration). Rien n'est stocké côté serveur, ce qui passe bien à l'échelle mais rend la révocation instantanée plus difficile. Un jeton divulgué non expiré reste valide jusqu'à son expiration.
Pour la plupart des applications maker et SaaS, les sessions serveur ou les jetons de courte durée associés à un jeton de rafraîchissement sont le choix par défaut plus sûr. Quelle que soit la sortie du générateur, confirmez que vous pouvez réellement déconnecter un utilisateur partout et invalider un identifiant compromis.
Les drapeaux de cookie sécurisé sont non négociables
Peu importe comment vous livrez l'identifiant de session, définissez le cookie correctement. Le code généré omet souvent ceux-ci :
- HttpOnly — empêche JavaScript de lire le cookie, limitant le vol via XSS.
- Secure — le cookie n'est envoyé que via HTTPS.
- SameSite —
LaxorStrictto reduce CSRF exposure. - Une expiration raisonnable et un nouvel identifiant de session émis lors de la connexion pour empêcher la fixation de session.
Never put a JWT or session token in localStorage if you can use an HttpOnly cookie instead; storage that scripts can read is storage an XSS bug can steal.
Hacher correctement les mots de passe
Si vous acceptez les mots de passe, stockez uniquement un hachage lent et salé. Utilisez un algorithme de hachage de mot de passe dédié tel que bcrypt, scrypt ou Argon2. N'utilisez pas MD5, SHA-256 ou tout hachage rapide à usage général pour les mots de passe, et ne stockez jamais en texte clair.
- Laissez la bibliothèque générer un sel unique par mot de passe.
- Comparez en utilisant la fonction de vérification à temps constant de la bibliothèque.
- Fiez-vous aux valeurs par défaut publiées et actuelles pour les facteurs de travail plutôt que d'inventer les vôtres.
Cela vaut la peine d'être audité spécifiquement, car un extrait généré d'apparence plausible peut silencieusement utiliser un hachage rapide. Lorsque vous examinez du code d'authentification généré, traitez un hachage faible comme un blocage de sortie. Notre guide d'audit de sécurité pour les applications générées par IA couvre comment grepper ces motifs systématiquement.
Réinitialisation de mot de passe sans créer de faille
Les flux de réinitialisation sont un point faible classique. Construisez-les de manière défensive :
- Générez un jeton aléatoire à usage unique lié au compte, et stockez uniquement son hachage.
- Donnez-lui une courte expiration (par exemple, une heure) et invalidez-le une fois utilisé.
- Renvoyez la même réponse que l'e-mail existe ou non, afin que le point de terminaison ne puisse pas être utilisé pour énumérer les comptes.
- Limitez le taux des demandes de réinitialisation et exigez une ré-authentification pour les changements sensibles comme la modification de l'e-mail du compte.
Contrôle d'accès basé sur les rôles
La plupart des applications ont besoin de plus que "connecté ou non." Définissez des rôles explicites (par exemple, admin, member, viewer) et vérifiez-les sur le serveur pour chaque action protégée. Deux règles maintiennent cela honnête :
- Appliquez l'autorisation sur le serveur, jamais seulement en masquant les boutons dans l'interface. Une interface masquée est une commodité, pas un contrôle.
- Par défaut, optez pour refuser. Un nouveau point de terminaison doit être inaccessible jusqu'à ce que vous accordiez explicitement l'accès, pas ouvert jusqu'à ce que quelqu'un se souvienne de le verrouiller.
Si vous construisez quelque chose avec des niveaux de rôles clairs, comme un CRM construit avec l'IA, modélisez les rôles avant de générer les points de terminaison afin que les règles d'accès soient intégrées plutôt que rajoutées après coup.
L'étape que l'IA saute généralement : tester l'accès au niveau de l'objet
C'est le test le plus important de cet article. L'autorisation au niveau de l'objet (souvent appelée IDOR lorsqu'elle est absente) signifie vérifier que cet utilisateur possède ou peut accéder cet enregistrement spécifique enregistrement, pas seulement qu'ils sont connectés.
Testez-le directement :
- Créez deux comptes, Utilisateur A et Utilisateur B.
- En tant qu'Utilisateur A, créez un enregistrement et notez son ID.
- Connectez-vous en tant qu'Utilisateur B et demandez l'enregistrement de l'Utilisateur A par cet ID, via l'API et en modifiant les URL.
- L'Utilisateur B doit recevoir un 403 ou 404 — jamais les données de l'Utilisateur A.
Répétez pour lire, mettre à jour et supprimer sur chaque type de ressource. Le code généré vérifie généralement la session mais oublie la clause de propriété dans la requête, donc ce simple test à deux comptes détecte une grande part des vulnérabilités réelles. Intégrez-le à votre liste de contrôle pré-déploiement pour les applications IA.
Points clés à retenir
- L'authentification ("qui êtes-vous") est la partie facile ; l'autorisation ("que pouvez-vous faire") est là où le code généré par IA échoue le plus souvent.
- Privilégiez les cookies HttpOnly, Secure, SameSite pour les identifiants de session ; assurez-vous de pouvoir réellement révoquer une session.
- Hachez les mots de passe avec bcrypt, scrypt ou Argon2 — jamais un hachage rapide ou en texte clair.
- Rendez les jetons de réinitialisation de mot de passe aléatoires, à usage unique, de courte durée et non énumérables.
- Appliquez les rôles et la propriété des objets sur le serveur ; par défaut, refuser.
- Exécutez toujours le test à deux comptes pour détecter les accès au niveau objet défaillants avant de livrer.
Synthèse
Laissez le constructeur ébaucher les écrans de connexion et le câblage ; cela fait gagner du temps. Puis concentrez vos efforts là où le risque se concentre : les indicateurs de cookies, le hachage des mots de passe, l'hygiène des jetons de réinitialisation, les vérifications de rôles et surtout l'accès au niveau objet. Si vous évaluez si la sortie générée est prête à être livrée, nos avis sur si les applications générées par IA sont prêtes pour la production et la construction d'un MVP SaaS avec l'IA mettent ce travail en contexte.
L'authentification est l'un des rares domaines où "ça marche quand je clique dessus" n'est pas suffisant. Vérifiez les limites, pas seulement le chemin heureux, et vous pouvez livrer l'authentification générée en toute confiance. Prêt à construire ? Commencez par LogicMint.