По мотивам публикации «Проектирование микросервиса» я решил написать (и написал!) опенсорс для реализации двухфакторной аутентификации. На самом деле получилось два репозитория, которые обеспечивают весь «бэкграунд» второго фактора аутентификации и предоставляют удобную архитектуру для внедрения плюшек.
Отдельно отмечу, что первая часть может служить самостоятельным приложением. Оба сервиса работают через API.
Это приложение отвечает за создание, отправку и проверку пина. Под капотом Sinatra + Redis.
Реализовано:
В планах:
Эта часть занимается всем что полезно при аутентификации, но напрямую к ней не относится. Работает на Rails + PG.
Реализовано:
В планах:
Если говорить о статистике, то для двухфакторки это жизненно важная фича. Например СМС-шлюзы иногда отмечают пропавшие смски как доставленные. В этом плане статистика создано/подтверждено скажет гораздо больше и поможет не потерять ценных пользователей.
Конечно решение разрабатывалось не как конкурент существующим, а как альтернатива. Например, когда надо реализовать доставку через свой шлюз, работать в закрытом режиме, допилить себе фичу и так далее. Также я надеюсь, что сообщество поможет сделать сервис лучше своей экспертной оценкой, пулреквестами и «еще бог знает чем».
Пинкоды: github.com/IlyaDonskikh/pincode
Акаунтинг: github.com/IlyaDonskikh/pincode_account
Возможно, у кого-то из читателей возник вопрос, что это за папка services и почему в ней храниться вся бизнес-логика. Ответ здесь: brewhouse.io/blog/2014/04/30/gourmet-service-objects.html.
Кроме всего вышеперечисленного у меня есть бесплатные вычислительные мощности на Азур, так что если вам интересно поэкспериментировать над этим проектом, но «негде», то напишите мне в личку. Проект запущен в облачном варианте здесь: pinc0de.com.
Отдельно отмечу, что первая часть может служить самостоятельным приложением. Оба сервиса работают через API.
Пинкоды
Это приложение отвечает за создание, отправку и проверку пина. Под капотом Sinatra + Redis.
Реализовано:
- установка времени жизни пинкода;
- ограничение по количеству попыток на ввод;
- выбор стороннего шлюза для отправки смсок.
В планах:
- другие способы доставки пинов (в идеале вынести эту доставку в отдельный модуль/сервис);
- настраиваемый уровень сложности кода.
Акаунтинг
Эта часть занимается всем что полезно при аутентификации, но напрямую к ней не относится. Работает на Rails + PG.
Реализовано:
- доступ по генерируемым ключам.
В планах:
- настройки доступа (например, открыть доступ только для определенных айпишников);
- cбор статистики.
Если говорить о статистике, то для двухфакторки это жизненно важная фича. Например СМС-шлюзы иногда отмечают пропавшие смски как доставленные. В этом плане статистика создано/подтверждено скажет гораздо больше и поможет не потерять ценных пользователей.
Итоги
Конечно решение разрабатывалось не как конкурент существующим, а как альтернатива. Например, когда надо реализовать доставку через свой шлюз, работать в закрытом режиме, допилить себе фичу и так далее. Также я надеюсь, что сообщество поможет сделать сервис лучше своей экспертной оценкой, пулреквестами и «еще бог знает чем».
Ссылки
Пинкоды: github.com/IlyaDonskikh/pincode
Акаунтинг: github.com/IlyaDonskikh/pincode_account
Возможно, у кого-то из читателей возник вопрос, что это за папка services и почему в ней храниться вся бизнес-логика. Ответ здесь: brewhouse.io/blog/2014/04/30/gourmet-service-objects.html.
Бонусы
Кроме всего вышеперечисленного у меня есть бесплатные вычислительные мощности на Азур, так что если вам интересно поэкспериментировать над этим проектом, но «негде», то напишите мне в личку. Проект запущен в облачном варианте здесь: pinc0de.com.
Chikey
Ради интереса глянул github.com/IlyaDonskikh/pincode_account/blob/master/app/services/pin/check.rb#L31
sakurity.com/blog/2015/03/15/authy_bypass.html
doniv Автор
Chikey спасибо, что посмотрел! Читал твой перевод перед публикацией в опенсорс :)
В моем случае любой запрос с откатом через двоеточие будет возвращать 404.
Chikey
Просто передавать юзер инпут через path всегда неудобно, может другой человек сконфигурирует сервер по другому?
doniv Автор
Хорошее замечание, спасибо, в v2 переконфигурирую.