Вопрос или проблема
У меня есть проект, который требует использования OTP для проверки пользователей, регистрирующихся в системе. Они хотели бы иметь возможность собирать номер телефона рекрутируемого, генерировать OTP, который будет отправлен на телефон каким-то образом, и заставить рекрутируемого ввести OTP во время регистрации для подтверждения. Интересно, есть ли какой-либо отдельный пакет OTP (коммерческий или с открытым исходным кодом), который можно использовать для легкой генерации и верификации с использованием CRUD?
Программное обеспечение должно работать предпочтительно на Linux, на веб-сервере, или, по крайней мере, быть легко доступным для запросов к нему как для генерации, так и для верификации.
Некоторый фон:
Пользователи не будут взаимодействовать с системой вообще. Я представляю себе, что другие системы взаимодействуют с программным обеспечением, к которому будут иметь доступ пользователи. Например, веб-система регистрации, которая нуждается в подтверждении номеров телефонов рекрутов, могла бы взаимодействовать с программным обеспечением OTP для получения строки OTP, а когда пользователь отправляет обратно строку OTP в систему регистрации, система регистрации может проверить это с помощью программного обеспечения OTP для подтверждения строки. Система регистрации должна иметь возможность отправлять REST-запросы к программному обеспечению OTP для всего этого.
Спасибо за помощь!
У Twilio есть служба, которая может помочь, называемая Authy
Ответ или решение
Генерация и Подтверждение Одноразовых Паролей (OTP): Рекомендации для Вашего Проекта
Ваша задача по разработке системы для генерации и верификации одноразовых паролей (OTP) требует продуманного подхода как в выборе технологий, так и в проектировании архитектуры решения. Ниже представлены рекомендации, которые помогут вам успешно реализовать ваш проект.
1. Понимание требований
Вы ищете пакет программного обеспечения для одноразовых паролей, который будет работать на Linux-сервере и обеспечивать возможность интеграции через REST API для обмена данными с вашей системой регистрации. Системы, которые будут взаимодействовать с программным обеспечением, не требуют прямого взаимодействия пользователей.
2. Выбор программного обеспечения
Существует несколько коммерческих и открытых решений для генерации и проверки OTP. Вот некоторые из них:
-
Twilio Authy: Это облачное решение, которое предлагает надежную и безопасную генерацию OTP, а также API для верификации. Twilio также поддерживает несколько методов отправки OTP, включая SMS и мобильные приложения, что делает его гибким вариантом.
-
Google Authenticator: Хотя это приложение используется для двухфакторной аутентификации, вы можете интегрировать алгоритм TOTP (Time-based One-Time Password) в ваше решение. Сначала вам нужно будет реализовать генерацию TOTP на сервере, а затем по запросу отправлять OTP пользователям через SMS.
-
PyOTP: Это библиотека Python для реализации OTP (TOTP и HOTP), которая может работать на сервере Linux. Вы можете совмещать её с библиотеками для отправки SMS, такими как
Twilio
илиNexmo
, для передачи OTP пользователям. -
OTP Server: Как альтернатива, вы можете использовать более специализированный сервер для OTP, например,
privacyIDEA
, который предоставляет REST API и может работать в средах Linux. Он поддерживает различные методы аутентификации, включая OTP.
3. Разработка REST API
Проектирование RESTful веб-сервиса для взаимодействия с OTP-системой требует внимательного подхода:
-
Эндпоинты:
- POST /otp/generate: Для генерации OTP и его отправки на указанный номер телефона.
- POST /otp/verify: Для проверки введенного OTP с сохранёнными значениями.
-
Форматы данных: Стандартные JSON-форматы для откликов и запросов удобно использовать для обеспечения совместимости.
-
Безопасность: Убедитесь, что все данные передаются через HTTPS, и используйте токены аутентификации, чтобы ограничить доступ к API.
4. Интеграция и тестирование
После реализации OTP-системы важно протестировать все сценарии, включая:
- Генерацию и отправку OTP.
- Обработку ввода OTP пользователем и его верификацию.
- Обработку ошибок, таких как неправильный ввод OTP или истечение времени действия кода.
Заключение
Выбор подходящего программного обеспечения для генерации и верификации одноразовых паролей – ключевой этап в успешной разработке вашей системы. Исследуйте различные варианты и выберите тот, который наилучшим образом соответствует вашим требованиям по функциональности, безопасности и интеграции. Удачи в вашем проекте!