Одноразовые пароли (OTP) — это механизм, повышающий безопасность по сравнению с обычными паролями. Когда OTP на основе времени (TOTP) хранится на телефоне пользователя и сочетается с тем, что знает пользователь (пароль), вы можете легко перейти к многофакторной аутентификации без добавления зависимости от поставщика SMS. Эта комбинация пароля и TOTP используется многими популярными веб-сайтами, включая Google, GitHub, Facebook, Salesforce и многими другими.
Библиотека otp
позволяет вам легко добавлять TOTP в ваше собственное приложение, повышая безопасность вашего пользователя от массового взлома паролей и вредоносного ПО.
Поскольку TOTP стандартизирован и широко распространен, существует множество мобильных клиентов и реализаций программного обеспечения.
otp
поддерживает:В качестве примера рабочего процесса регистрации GitHub задокументировал его, но основные моменты таковы:
key,_ := totp.Generate(...)
.key.Secret()
и key.Image(...)
.totp.Validate(...)
.key.Secret()
GenerateCode
и структуру счетчика или time.Time
для создания допустимого кода, совместимого с большинством реализаций.GenerateCodeCustom
в любом модуле.totp.Validate(...)
Когда пользователь теряет доступ к своему устройству TOTP, он больше не будет иметь доступа к своей учетной записи. Поскольку TOTP часто настраиваются на мобильных устройствах, которые могут быть потеряны, украдены или повреждены, это распространенная проблема. По этой причине многие провайдеры предоставляют своим пользователям «резервные коды» или «коды восстановления». Это набор одноразовых кодов, которые можно использовать вместо TOTP. Это могут быть просто случайно сгенерированные строки, которые вы храните в своем бэкэнде. Документация Github предоставляет обзор пользовательского опыта.
Пожалуйста, открывайте вопросы в Github для идей, ошибок и общих мыслей. Запросы на вытягивание, конечно, предпочтительнее :)
otp
лицензируется по лицензии Apache версии 2.0.