Open source сервисы аутентификации
Потребовалось сделать регистрацию/логин пользователей для пет-проекта. А я это жуть как не люблю, прямо до скрежета в зубах. Поэтому решил поискать что-нибудь совсем готовое, чтобы минимум кода писать и можно было однотипно использовать в будущих проектах.
В итоге нашёл несколько интересных сервисов. Забавно, при узкой предметной области они заметно отличаются друг от друга.
Далее будет моё предвзятое и не особо компетентное мнение. Сугубо для закрепления в истории результатов раскопок.
Есть три проекта, которые вызвали мой интерес:
Фич у каждого сервиса много, даже не буду пытаться перечислять. Учтите, у каждого из них уникальные их наборы. Надо проверять, что выбранный сервис умеет всё что надо и как надо.
Keycloak
Для любителей кровавого энтерпрайза со всеми плюсами и минусами.
Если для вашей глобальной корпорации надо поднять внутреннюю аутентификацию со странными правилами, скорее всего вам сюда.
Минусы вытекают из той же энтерпрайзности:
- Не лёгкая документация.
- Переусложнённая админка: можно настроить всякое, но нет кнопки «сделать хорошо».
- Настройка стилей страницы с формой логина находится в админке, прямо через неё редактируется. Олдскул.
Ory
Для любителей облаков и kubernetes.
Вместо одного сервиса, подымаете кучу узкоспециализированных, каждый делает что-то одно, но хорошо.
Смотрел очень поверхностно, так как мне такое удовольствие даже с доплатой не сдалось.
Но если делаете своё облако, Ory может быть как раз для вас.
SuperTokens
Модно-молодёжно. Умеет меньше остальных, зато проще и приятнее.
- Документация организована в виде рецептов по решению конкретных задач: сделать беспарольную аутентификацию, сделать аутентификацию через соцсети, сделать аутентификацию через почту и пароль, etc. С примерами кода, советами, подсказками, шутками и прибаутками.
- Есть батарейки для популярных бэкенд библиотек и языков, включая FastAPI, что мне и надо.
- Есть библиотеки для web и мобильных клиентов. Плюс готовая GUI батарейка для React. У меня Vue.js, тащить React только для логина не хотел, поэтому написал свой виджет.
- Разрешает слать письма через свой почтовый сервис даже для self-hosted версии! Киллер фича и гениальный маркетинговый ход.
- Предоставляет удобный бесплатный план (до 5000 MAU), если не хотите морочиться с хостингом своего сервера.
Минус — умеет меньше остальных, но мне хватило.
В целом, считаю, будущее за passwordless аутентификацией, а её SuperTokens умеют.
Читать далее
- Миграции backend на практике
- Модная типизация в Python
- Генерация подземелий — от простого к сложному
- Автоматический генератор квестов
- Feeds Fun — читалка новостей с тегами и ChatGPT
- Топовые LLM фреймворки могут быть не так надёжны, как вы думаете
- Блог переехал на новый движок
- Опыт портирования проекта на Python 3
- GraphQL & Python
- Python & OpenAPI