Skip to content
Ushakov Michael edited this page Aug 2, 2023 · 4 revisions

Ferrum

Ferrum - сервер авторизации, написанный на Go, совместимый по API с Keycloak. Ferrum - продукт с открытым исходным кодом **Российской компании ** Wissance, который в рамках программы импортозамещения позволит уменьшить зависимость Российских программных продуктов от продуктов (Keycloak, OpenAm, Ory/Kratos) , создаваемых в потенциально недружественных странах, которые в будущем могут стать недоступными для Российских компаний.

1. Назначение т.е. как возник этот проект

Данный проект появился для проведения интеграционных тестов из кода для решения в области безопасности в крупном Российском телеком-операторе. Внедрение этого решения сэкономило значительные усилия и время по развертыванию тестовой инфраструктуры и запуску инфраструктуры из кода. Но, поскольку, Ferrum - полноценный сервер авторизации, то развитие его для замены Keycloak в программных решения позволит достичь следующего:

  • Go компилируется в нативный код и априори работает быстрее Java;
  • Go приложения потребляют меньше ресурсов чем Java приложения, это значит, что Ferrum может обслуживать одновременно больше клиентов чем Keycloak;
  • Развертывание Go-приложений на порядок проще чем Java;
  • Исходя из опыта управления KeyCloak у него непростое начальное конфигурирование (Quarkus-версия), Ferrum конфигурируется чрезвычайно просто
  • Сборка данных, представляющих информацию об юзерах (UserInfo) является сложным (утомительное конфигурирование Mapper-ов), Ferrum позволяет задать любую структуру UserInfo крайне просто, при этом каждый пользователь может иметь разную структуру;
  • Будет внедрена модель описания приложения для решения задач именно Авторизации на основе данных пользователя в самом сервере авторизации Ferrum, а не в приложениях (позволит уменьшить время на настройку политик в самих приложениях).

2. Какие задачи призван решать

  • Заменить по функциональности Keycloak
  • За счет другого технологического стэка и подхода сделать сервер авторизации быстрее и менее ресурсоемким (на 1 пользователя)
  • Сделать сервер авторизации горизонтально масштабируемым на любое число инстансов.

3. Планы (эпики, которые должны быть реализованы в проекте)

  1. Доделать версию 1.0 (рефреш токена, код авторизации, регистрация и редактирование пользователей, соц. провайдеры)
  2. Легковесная админка для управления Ferrum
  3. Интеграция с LDAP, AD и Kerberos
  4. Политики авторизации
  5. Поддержка горизонтального масштабирования
  6. Внедрение Flow биометрической аутентификации (без паролей) <- Отдельное решение Ferrum Enterprise