HTTP API закрыт за вход через OIDC у Authelia

- шаг схемы закрывает поверхность, которую хранилище приносит открытой:
  собственную регистрацию, вход по паролю и одноразовый код — без этого
  закрытие приёма обходилось двумя запросами
- продление сессии выключено, срок семь суток: иначе отзыв доступа у
  провайдера до сервиса не доходит никогда
- файл записи отдаётся вошедшему по токену файла — пересмотр
  ADR-2026-08-12-file-link-open-but-not-logged
This commit is contained in:
av
2026-08-12 17:44:22 +03:00
parent d676df8a27
commit c44f0e7582
37 changed files with 3997 additions and 65 deletions
+11 -7
View File
@@ -3,7 +3,7 @@
- **Тип:** feature
- **Категория:** Очередь
- **Зачем:** HTTP API открыт наружу без аутентификации: любой из интернета заводит задачи за наши деньги и читает чужие расшифровки по идентификатору.
- **Теги:** goal:multi-user, question
- **Теги:** goal:multi-user
Двигает пункты 1 и 3 «Завершения» цели: неаутентифицированный запрос к записям
не проходит ни к странице, ни к API; вход идёт через OIDC у Authelia, а выход из
@@ -27,7 +27,7 @@
Authelia, идентификатор клиента, секрет, соответствие полей учётной записи;
- эндпоинты входа и выхода, которые PocketBase приносит своими;
- `POST /api/audio` и `GET /api/status/:id` — оба уходят за аутентификацию;
- `GET /health` и `GET /metrics` решить и записать, остаются ли открытыми;
- `GET /health` и `GET /metrics` — остаются открытыми и сессии не требуют;
- хранение сессии: её ведёт PocketBase, и решить надо, чем она предъявляется
приложению;
- секция конфигурации под провайдера: адрес, идентификатор клиента, секрет;
@@ -39,7 +39,9 @@
- Запрос к `POST /api/audio` и `GET /api/status/:id` без сессии получает отказ, а
не заводит задачу и не отдаёт текст. Оракул — тест на обоих эндпоинтах без
куки: код ответа 401 либо 302 на вход, тело без данных задачи.
куки: код ответа 401 либо 302 на вход, тело без данных задачи. Тот же тест
проверяет вторую сторону границы: `GET /health` и `GET /metrics` без куки
отвечают 200.
- Сессия переживает перезапуск приложения. Оракул — тест: запрос с прежней кукой
после пересоздания сервера проходит.
- Выход из сессии закрывает доступ. Оракул — тест: после выхода тот же запрос
@@ -57,7 +59,9 @@
тоже не трогаем: наружу её закрывает Authelia на обратном прокси, а это работа
выкладки.
## Вопросы
Остаются ли `GET /health` и `GET /metrics` открытыми? Прокси и система сбора
метрик сессии не имеют, но и наружу их отдавать незачем.
`GET /health` и `GET /metrics` за аутентификацию не уходят — решено 2026-08-12.
Сессии нет ни у пробы здоровья, ни у сборщика Prometheus, и вход по личным
токенам эта задача не заводит. Наружу их закрывает то же правило обратного
прокси, что и панель администратора, — работа выкладки. Пока правило не
поставлено, `/metrics` отдаёт наружу объёмы работы сервиса: число задач, размеры
и длительности записей; содержимого расшифровок в них нет.