Comment mettre en place une double authentification, sans mot de passe ?
60 ans après la création du premier mot de passe au Massachusetts Institute of Technology (MIT), le constat est clair : les mots de passe ne sont plus assez efficaces. Pour protéger les utilisateurs et leurs données personnelles sur nos solutions en ligne, il convient de se tourner vers d’autres alternatives comme l’authentification sans mot de passe. Découvrons ensemble comment mettre en place cette protection d’un nouveau genre.
Avec l’explosion massive des cyberattaques – encore plus nombreuses depuis la crise du Covid et l’augmentation du télétravail – la sécurité des comptes est devenue un sujet majeur. D’autant que les mots de passe n’offrent plus une protection suffisante pour de multiples raisons :
- Les mots de passe choisis par les utilisateurs sont souvent bien trop simples.
- Un seul mot de passe est souvent utilisé par le même utilisateur sur plusieurs de ses comptes.
- Chaque internaute a bien trop de comptes en ligne pour mémoriser l’ensemble de ses mots de passe.
- La gestion des mots de passe devient un vrai casse-tête onéreux pour les entreprises.
- Le piratage de mot de passe peut générer des conséquences catastrophiques pour les internautes (usurpation d’identité par exemple).
Face à cette situation, l’authentification sans mot de passe semble être une bonne alternative.
Double authentification : notre table des matières
En quoi consiste la double authentification, sans mot de passe ?
Cette méthode élimine le besoin de générer un password pour accéder à un système. Elle le remplace par un facteur d’authentification plus sécurisé, souvent en deux étapes (on parle alors d’authentification multifacteur – MFA). Il peut s’agir d’un code envoyé par SMS sur votre téléphone, d’un lien adressé sur votre boîte mail. Ces facteurs permettent de vérifier votre identité avant d’autoriser la connexion à un système.
L’authentification sans mot de passe fonctionne avec des paires de clés de chiffrement composées d’une clé privée et d’une clé publique. Même si les deux sont appelées « clés », il faut considérer que la clé publique est le cadenas et la clé privée la véritable clé qui déverrouille le cadenas.
Un individu qui souhaite créer un compte sécurisé utilise un outil pour générer une paire de clés publique-privée. La clé privée est stockée sur l’appareil de l’utilisateur et est liée à un facteur d’authentification, comme une empreinte digitale, un code PIN ou la reconnaissance vocale. L’utilisateur peut uniquement y accéder de cette façon. La clé privée est fournie à la solution web en ligne pour lequel l’utilisateur souhaite posséder un compte.
Quels types d’authentification à deux facteurs pouvons-nous mettre en place ?
- Par email : les utilisateurs renseignent leur adresse e-mail pour obtenir un lien ou un code unique pour se connecter.
- Par SMS : les utilisateurs saisissent leur numéro de téléphone pour obtenir un code utile à la connexion.
- Biométrique : dans ce cas, la numérisation d’une partie de votre corps (iris, empreintes digitales par exemple) est nécessaire pour accéder à la solution. Autre exemple, le Face ID vous permet, en toute sécurité, de déverrouiller votre iPhone ou iPad, d’authentifier des achats via ApplePay.
Ces méthodes ont l’avantage :
- De renforcer la sécurité
- D’être plus facile à utiliser – fini la mémorisation de mot de passe « à rallonge ».
Comment mettre en place une authentification à deux facteurs avec Amazon Cognito
Dans ce cadre, nous allons utiliser les groupes d’utilisateurs Amazon Cognito (Pool Users).
Un Pool Users est un annuaire d’utilisateurs dans Amazon Cognito. Via ce groupe, vos utilisateurs peuvent se connecter à votre application Web ou mobile par l’intermédiaire d’Amazon Cognito. Vos utilisateurs peuvent également se connecter via des fournisseurs d’identité sociale comme Google, Facebook, Amazon ou Apple.
Que vos utilisateurs se connectent directement ou via un tiers, tous les membres du groupe d’utilisateurs ont un profil d’annuaire auquel vous pouvez accéder via un kit de développement logiciel (SDK).
Cognito ne prend pas en charge la méthode d’authentification sans mot de passe, mais vous permet à la place de gérer le processus d’authentification à l’aide de déclencheurs (fonctions lambda) et de définir votre propre défi d’authentification :
Par email
La solution d’authentification par e-mails utilise un groupe d’utilisateurs Amazon Cognito et quelques fonctions Lambda pour implémenter le flux d’authentification personnalisé. Découvrez-la dans cet article : https://amzn.to/3h35kBA
Amazon Simple Email Service (Amazon SES) est utilisé pour envoyer les e-mails avec les codes de connexion à usage unique.
Le processus de connexion est pris en charge par des pages d’interface utilisateur personnalisées.
Voici l’architecture de la solution :
Le diagramme et les étapes suivantes décrivent le processus de la solution :
- L’utilisateur entre son adresse e-mail sur la page de connexion personnalisée, qui l’envoie au groupe d’utilisateurs Amazon Cognito.
- Le groupe d’utilisateurs appelle la fonction Lambda « Define Auth Challenge ». Cette fonction Lambda détermine quel défi personnalisé doit être créé.
- Le groupe d’utilisateurs appelle la fonction Lambda « Créer un défi d’authentification ». Cette fonction Lambda génère un code de connexion secret et l’envoie par courrier à l’utilisateur à l’aide d’Amazon SES.
- L’utilisateur récupère le code de connexion secret dans sa boîte aux lettres et le saisit sur la page de connexion personnalisée, qui l’envoie au groupe d’utilisateurs.
- Le groupe d’utilisateurs appelle la fonction Lambda « Verify Auth Challenge Response ». Cette fonction Lambda vérifie le code que l’utilisateur a saisi.
- Le groupe d’utilisateurs appelle la fonction Lambda « Define Auth Challenge ». Cette fonction Lambda vérifie que le défi a été répondu avec succès et qu’aucun autre défi n’est nécessaire. Il inclut « issueTokens: true » dans sa réponse au groupe d’utilisateurs. Le groupe d’utilisateurs considère maintenant que l’utilisateur est authentifié et envoie à l’utilisateur des jetons Web JSON (JWT) valides (dans la réponse à 4).
Si vous souhaitez mettre en place cette méthode d’authentification, découvrez la méthode pas-à-pas => https://amzn.to/3h35kBA
Par SMS
En revanche, si vous préférez mettre en place une méthode d’authentification par SMS, nous vous invitons à découvrir ce lien => https://bit.ly/38HK00j
La méthode d’authentification utilise le téléphone mobile de l’utilisateur pour accorder des autorisations aux points de terminaison sécurisés. Cette pile a été développée en utilisant :
- AWS Cognito en tant que gestionnaire d’authentification.
- Python comme langage de programmation pour les fonctions lambda.
Voici l’architecture de la solution :
Afin d’obtenir une API d’authentification personnalisable, certains points de terminaison ont été développés :
- /sign_up : crée un utilisateur dans Cognito et envoie un mot de passe unique (OTP – one-time password) au téléphone mobile de l’utilisateur. L’utilisateur a 1 minute pour répondre.
- /sign_in : vérifie l’OTP qui a été envoyé au téléphone mobile de l’utilisateur. Le jeton fourni a 1 heure comme durée d’expiration.
- /refresh_token : actualise un jeton expiré.
- /secured/call : renvoie simplement tous les paramètres que vous avez envoyés.
Si vous souhaitez mettre en place cette méthode d’authentification, découvrez la méthode pas-à-pas => https://bit.ly/38HK00j
Alors que les données sont de plus en plus nombreuses à gérer, et face au nombre grandissant des attaques de phishing, cette question du MFA vaut la peine d’être posée. Pour la sécurité de vos données, de celles de vos utilisateurs, et pour la sérénité de votre entreprise.