HTTP API закрыт за вход через OIDC у Authelia
- шаг схемы закрывает поверхность, которую хранилище приносит открытой: собственную регистрацию, вход по паролю и одноразовый код — без этого закрытие приёма обходилось двумя запросами - продление сессии выключено, срок семь суток: иначе отзыв доступа у провайдера до сервиса не доходит никогда - файл записи отдаётся вошедшему по токену файла — пересмотр ADR-2026-08-12-file-link-open-but-not-logged
This commit is contained in:
@@ -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` отдаёт наружу объёмы работы сервиса: число задач, размеры
|
||||
и длительности записей; содержимого расшифровок в них нет.
|
||||
|
||||
Reference in New Issue
Block a user