Logo

Veskleg Conseil

Système d'authentification utilisateur

Migration d'un système d'authentification in-house vers vers AWS Cognito

Contexte

Le système d'authentification du client développé en interne ne répond plus aux exigences de sécurité. Il ne permet pas de faire de l'authentification multi-facteur. Il n'a pas non plus de système efficace permettant de détecter les comportements "suspects", par exemple quand plusieurs tentatives de connexion pour des comptes différents proviennent de la même adresse IP. Un système de filtrage manuel des IPs a été mis en place mais il n'est pas suffisamment efficace face à des cyber-attaquant toujours plus efficaces.

Solution mise en œuvre

Après réflexion et analyse des différentes options possible la solution retenue a été d'externaliser toute l'authentification vers AWS Cognito. AWS Cognito propose un ensemble de endpoint d'API qui permettent de gérer de bout en bout l'authentification d'utilisateurs. L'utilisateur va désormais envoyer son login + mot de passe directement vers l'API d'AWS Cognito. Ce mot de passe ne transite donc plus jamais par les systèmes du client, ce qui réduit significativement le risque de fuite. Il n'y a plus de possibilité pour un attaquant de s'en prendre au système du client puisque celui-ci ne contient plus d'informations sensibles. Le système d'authentification intègre nativement une validation multi-facteur dont les règles peuvent être paramétrées via la console AWS : systématique ou uniquement en cas de comportement suspicieux par exemple. En cas d'authentification réussie, l'API Cognito fournit un JSON Web Token qui est signé par la clef d'AWS et donc non modifiable. Le système du client aura uniquement à s'assurer que le token est valide et n'a pas été altéré pour autoriser l'utilisateur à accéder aux différentes ressources.

Le processus peut être personnalisé de façon très fine grâce à un système d'évènements qui déclenchent des fonctions Lambda : les messages envoyés à l'utilisateur peuvent être modifiés, le vecteur de communication (SMS, Email, ...) peut également être remplacé. La migration peut se faire de façon fluide. En effet il est possible de créer une passerelle vers le système d'authentification "legacy" : lorsqu'un utilisateur historique tente de se connecter via le nouveau système, AWS Cognito va interroger l'ancienne base de mot de passe pour confirmer que le login / mot de passe est valide. Si l'ancien système confirme que le mot de passe est OK, ce mot de passe sera automatiquement migré vers AWS Cognito. Cette approche permet d'avoir une solution totalement transparente pour les utilisateurs qui ne voient aucune différence. Cela évite également de devoir faire un export de la base de mots de passe, ce qui n'est pas toujours possible si, par exemple, les mots de passe ont été hashés, et qui augmente le risque de fuite si jamais cette opération se passe mal.

En s'appuyant sur cette solution externalisée, la sécurité du système a pu être augmentée de façon significative sans pour autant nécessiter des efforts de développement trop importants. Cette migration a pu être menée en quelques semaines sans interruption du service.

Bénéfices

  • Risque de cyber-attaque considérablement réduit l'attaquant doit s'attaquer directement aux systèmes d'AWS plutôt qu'à l'infrastructure du client
  • Solution 100% backend aucun impact sur le front-end et l'expérience utilisateur
  • Flexibilité accrue l'intégration de nouveaux modes d'authentification (ex. Google Id) peut se faire directement dans la console AWS sans développements supplémentaires

Technologies utilisées

AWS Cognito

AWS Lambda

TypeScript

© 2025 Veskleg Conseil - Entreprise Individuelle domiciliée au 35 rue Jean Delalande, 35400 Saint-Malo, enregistrée au RCS de Saint-Malo sous le numéro 988 516 860

Version: 1.4.0