Les mots de passe à usage unique (OTP) sont un mécanisme permettant d'améliorer la sécurité par rapport aux seuls mots de passe. Lorsqu'un OTP basé sur le temps (TOTP) est stocké sur le téléphone d'un utilisateur et combiné avec quelque chose que l'utilisateur connaît (mot de passe), vous disposez d'un accès facile à l'authentification multifacteur sans ajouter de dépendance à un fournisseur de SMS. Cette combinaison Mot de passe et TOTP est utilisée par de nombreux sites Web populaires, notamment Google, GitHub, Facebook, Salesforce et bien d'autres.
La bibliothèque otp
vous permet d'ajouter facilement des TOTP à votre propre application, augmentant ainsi la sécurité de vos utilisateurs contre les violations massives de mots de passe et les logiciels malveillants.
TOTP étant standardisé et largement déployé, il existe de nombreux clients mobiles et implémentations logicielles.
otp
prend en charge :Pour un exemple de flux de travail d'inscription fonctionnel, GitHub a documenté le leur, mais les bases sont :
key,_ := totp.Generate(...)
.key.Secret()
et key.Image(...)
.totp.Validate(...)
.key.Secret()
GenerateCode
et une structure counter ou time.Time
pour générer un code valide compatible avec la plupart des implémentations.GenerateCodeCustom
dans l'un ou l'autre module.totp.Validate(...)
Lorsqu'un utilisateur perd l'accès à son appareil TOTP, il n'aura plus accès à son compte. Étant donné que les TOTP sont souvent configurés sur des appareils mobiles qui peuvent être perdus, volés ou endommagés, il s'agit d'un problème courant. C'est pour cette raison que de nombreux fournisseurs donnent à leurs utilisateurs des « codes de sauvegarde » ou des « codes de récupération ». Il s'agit d'un ensemble de codes à usage unique qui peuvent être utilisés à la place du TOTP. Il peut simplement s'agir de chaînes générées aléatoirement que vous stockez dans votre backend. La documentation de Github fournit un aperçu de l'expérience utilisateur.
Veuillez ouvrir les problèmes dans Github pour des idées, des bugs et des réflexions générales. Les demandes de tirage sont bien sûr préférées :)
otp
est sous licence Apache, version 2.0