Las contraseñas de un solo uso (OTP) son un mecanismo para mejorar la seguridad de las contraseñas únicamente. Cuando una OTP basada en tiempo (TOTP) se almacena en el teléfono de un usuario y se combina con algo que el usuario sabe (contraseña), tiene un acceso fácil a la autenticación multifactor sin agregar una dependencia de un proveedor de SMS. Esta combinación de contraseña y TOTP es utilizada por muchos sitios web populares, incluidos Google, GitHub, Facebook, Salesforce y muchos otros.
La biblioteca otp
le permite agregar fácilmente TOTP a su propia aplicación, lo que aumenta la seguridad de su usuario contra violaciones masivas de contraseñas y malware.
Debido a que TOTP está estandarizado y ampliamente implementado, existen muchos clientes móviles e implementaciones de software.
otp
:Para ver un ejemplo de un flujo de trabajo de inscripción funcional, GitHub ha documentado el suyo, pero los conceptos básicos son:
key,_ := totp.Generate(...)
.key.Secret()
y key.Image(...)
.totp.Validate(...)
.key.Secret()
GenerateCode
y un contador o estructura time.Time
para generar un código válido compatible con la mayoría de las implementaciones.GenerateCodeCustom
en cualquiera de los módulos.totp.Validate(...)
Cuando un usuario pierde el acceso a su dispositivo TOTP, ya no tendrá acceso a su cuenta. Debido a que los TOTP a menudo se configuran en dispositivos móviles que pueden perderse, ser robados o dañarse, este es un problema común. Por este motivo, muchos proveedores dan a sus usuarios "códigos de seguridad" o "códigos de recuperación". Estos son un conjunto de códigos de un solo uso que se pueden usar en lugar del TOTP. Estas pueden ser simplemente cadenas generadas aleatoriamente que almacena en su backend. La documentación de Github proporciona una descripción general de la experiencia del usuario.
Abra los problemas en Github para obtener ideas, errores y pensamientos generales. Por supuesto, se prefieren las solicitudes de extracción :)
otp
tiene la licencia Apache, versión 2.0