51 lines
2.9 KiB
Markdown
51 lines
2.9 KiB
Markdown
# Authelia вместо Keycloak для SSO
|
|
|
|
- Дата: 2025-05-07
|
|
|
|
## Контекст
|
|
|
|
Для SSO/OIDC на сервере стоял Keycloak (заведён годом ранее,
|
|
2024-05-25). Проблема — ресурсы: Keycloak съедал больше 500 МБ RAM, что
|
|
тяжело для личного сервера с ограниченной оперативной памятью. При этом вся его мощь
|
|
избыточна: пользователей меньше десяти, realms / federation / тяжёлый
|
|
корпоративный стек не нужны. Изначально взял Keycloak, потому что нужен был
|
|
OIDC-сервер для настройки Outline; на тот момент было понятное
|
|
руководство по связке OIDC и Keycloak.
|
|
|
|
Требовался лёгкий по памяти SSO-провайдер с хорошей документацией,
|
|
желательно на Go/Rust.
|
|
|
|
## Рассмотренные варианты
|
|
|
|
- **Оставить Keycloak.** Отвергнуто: > 500 МБ RAM ради < 10
|
|
пользователей, функционал избыточен для личного сервера.
|
|
- **Authelia** (выбран). Лёгкая (Go), малое потребление памяти, хорошая
|
|
документация. Умеет и OIDC, и forward-auth.
|
|
|
|
Критерии отбора замены: минимальный расход RAM, хорошая документация,
|
|
стек Go/Rust.
|
|
|
|
## Решение
|
|
|
|
Заменили Keycloak на Authelia как провайдер аутентификации
|
|
(коммиты `a77fefc`, `d1500ea`, `3a23c08`). Authelia используется в трёх
|
|
режимах:
|
|
|
|
- **OIDC** для приложений, которым он нужен (например, Outline).
|
|
- **Forward-auth** агент в Caddy — удобно там, где полноценный OIDC
|
|
избыточен.
|
|
- **Закрытие чувствительных приложений** за единым логином. Раньше для
|
|
этого использовался basic auth в Caddy.
|
|
|
|
## Последствия
|
|
|
|
- `+` Резко меньше потребление RAM — критично для сервера с дефицитом
|
|
памяти.
|
|
- `+` Forward-auth закрывает приложения без OIDC проще, чем поднимать
|
|
отдельный OIDC-клиент под каждое.
|
|
- `+` Единая точка аутентификации вместо разрозненного basic auth в
|
|
Caddy.
|
|
- `-` Authelia беднее Keycloak по возможностям (нет полноценного интерфейса
|
|
управления пользователями, realms, federation) — но для < 10
|
|
пользователей это не нужно.
|