tasks: целевая картина пересобрана — три цели, тринадцать задач, сдвинутые границы
- паспорт: сервис объявлен архивом с бессрочным хранением записей и текстов, машинная вычитка расшифровки внутри границ, приложение — основной вход; добавлены две границы: не файловое хранилище общего назначения и не биллинг; - заведены цели upload-reliability, user-settings, usage-stats и тринадцать задач; очередь пересобрана — сперва починки, затем разведки о хранилище, затем доступ и владелец, и только потом экраны; - архитектура: четыре новых открытых вопроса — приём большого файла, учёт расхода, срок хранения, потолок шести часов.
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
# ✨ Пускать скрипты в API по личным токенам
|
||||
|
||||
- **Тип:** feature
|
||||
- **Категория:** Очередь
|
||||
- **Зачем:** Вход через OIDC закрывает API целиком, а скрипту браузерная сессия недоступна: автоматизировать загрузку станет нечем.
|
||||
- **Теги:** goal:multi-user
|
||||
|
||||
Двигает пункты 1 и 6 «Завершения» цели: запрос без токена не проходит (пункт 1),
|
||||
а скрипт ходит в API по токену, выпущенному пользователем, и видит ровно его
|
||||
записи (пункт 6).
|
||||
|
||||
Токен принадлежит учётной записи и даёт ровно её права: записи, заведённые по
|
||||
токену, видны владельцу в приложении, и наоборот.
|
||||
|
||||
## Затрагивает
|
||||
|
||||
- заголовок авторизации у всех эндпоинтов `/api/`;
|
||||
- таблица токенов: владелец, имя, отпечаток, время выпуска и последнего
|
||||
обращения, и её миграция;
|
||||
- эндпоинты выпуска, перечня и отзыва токена;
|
||||
- экран настроек — место, где токен выпускают и отзывают;
|
||||
- `docs/security.md` — второй способ представиться и хранение отпечатка;
|
||||
- `README.md` — пример вызова API скриптом.
|
||||
|
||||
## Критерии приёмки
|
||||
|
||||
- Запрос с годным токеном заводит задачу от имени его владельца. Оракул — тест
|
||||
API: задача в репозитории с владельцем токена.
|
||||
- Запрос без токена и с отозванным токеном получает `401` и задачи не заводит.
|
||||
Оракул — тест на трёх случаях: нет заголовка, чужая строка, отозванный токен.
|
||||
- Полное значение токена показывается один раз при выпуске, в базе лежит только
|
||||
отпечаток. Оракул — тест: повторное чтение токена отдаёт имя и отпечаток,
|
||||
значение отсутствует, плюс поиск значения по логу пуст.
|
||||
- Токен не попадает ни в журнал, ни в текст ошибки. Оракул — тест приёма с
|
||||
токеном: в перехваченном журнале значения нет.
|
||||
|
||||
## Рамки
|
||||
|
||||
Учётные записи по-прежнему заводит Authelia — свою регистрацию не делаем.
|
||||
Сроков жизни и областей действия у токена не заводим: он даёт права владельца
|
||||
целиком. Берётся после `oidc-login`: до неё представляться некому.
|
||||
Reference in New Issue
Block a user