tasks: вход переезжает на заголовки прокси, пять задач про OIDC закрыты

- заведена `trusted-header-login` и поставлена в голову очереди
- пять задач про механику OIDC закрыты как отменённые ею
- `dev-run-task` и `api-tokens` переписаны под новый вход
This commit is contained in:
av
2026-08-22 17:43:18 +03:00
parent 2bb252e018
commit e4441f3c49
10 changed files with 113 additions and 261 deletions
+11 -3
View File
@@ -2,17 +2,24 @@
- **Тип:** feature
- **Категория:** Очередь — Второй способ представиться ставится на готовые владельца и контракт, иначе форма ошибки переписывается дважды.
- **Зачем:** Вход через OIDC закрывает API целиком, а скрипту браузерная сессия недоступна: автоматизировать загрузку станет нечем.
- **Зачем:** Скрипту недоступны ни браузерная сессия, ни вход у Authelia: домен целиком стоит за прокси, и автоматизировать загрузку нечем.
Запрос без токена не проходит, а скрипт ходит в API по токену, выпущенному
пользователем, и видит ровно его записи.
Половина работы при этом лежит на контуре: домен целиком стоит за `forward_auth`
Authelia, и запрос скрипта не доходит до сервиса вовсе — его отбивает прокси.
Значит адресам API нужно правило, пропускающее их к сервису, а сервис судит
токен сам. Правило живёт в `pet-project-server`, вне этого репозитория.
Токен принадлежит учётной записи и даёт ровно её права: записи, заведённые по
токену, видны владельцу в приложении, и наоборот.
## Затрагивает
- заголовок авторизации у всех адресов приложения `/app/`;
- заголовок авторизации у всех адресов приложения `/app/` и его отношение к
заголовку, который ставит прокси: два способа представиться и один владелец;
- правило Authelia, пропускающее адреса API мимо входа, — в `pet-project-server`;
- таблица токенов: владелец, имя, отпечаток, время выпуска и последнего
обращения, и её миграция;
- адреса выпуска, перечня и отзыва токена — `/app/me/tokens`;
@@ -35,6 +42,7 @@
Учётные записи по-прежнему заводит Authelia — свою регистрацию не делаем.
Сроков жизни и областей действия у токена не заводим: он даёт права владельца
целиком. Берётся после `oidc-login`: до неё представляться некому. Экрана выпуска здесь
целиком. Берётся после `trusted-header-login`: до неё представляться некому, а
она же решает, какому источнику сервис верит. Экрана выпуска здесь
нет — приложения ещё не существует, токен выпускается запросом к API; место
токена на экране настроек заводит `settings-screen`.