
Двофакторна автентифікація для всіх
За мотивами публікації «Проектування мікросервісу» я вирішив написати (і написав!) опенсорс для реалізації двофакторної автентифікації. Насправді вийшло два репозитарії, які забезпечують весь «бекграунд» другого фактора аутентифікації і надають зручну архітектуру для впровадження плюшок.
Окремо зазначу, що перша частина може служити самостійним додатком. Обидва сервіси працюють через 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.