- порядок беклога и роадмапа назначен слоями: проверки, которым можно верить → долги входа → владелец записи и контракт API → конвейер под тестами → приложение и возможности поверх; у каждого движения записана причина; - заведены восемь задач под пункты «Завершения», которых не закрывала ни одна запись, — цель any-audio-source была без задач вовсе; - у четырёх задач сняты критерии, требовавшие того, что делает задача ниже по очереди; исправлены ссылки на несуществующий repo/sqlite и на отменённую разведку об очереди.
43 lines
3.4 KiB
Markdown
43 lines
3.4 KiB
Markdown
# ✨ Пускать скрипты в API по личным токенам
|
|
|
|
- **Тип:** feature
|
|
- **Категория:** Очередь — Второй способ представиться ставится на готовые владельца и контракт, иначе форма ошибки переписывается дважды.
|
|
- **Зачем:** Вход через OIDC закрывает API целиком, а скрипту браузерная сессия недоступна: автоматизировать загрузку станет нечем.
|
|
- **Теги:** goal:multi-user
|
|
|
|
Двигает пункты 1 и 6 «Завершения» цели: запрос без токена не проходит (пункт 1),
|
|
а скрипт ходит в API по токену, выпущенному пользователем, и видит ровно его
|
|
записи (пункт 6).
|
|
|
|
Токен принадлежит учётной записи и даёт ровно её права: записи, заведённые по
|
|
токену, видны владельцу в приложении, и наоборот.
|
|
|
|
## Затрагивает
|
|
|
|
- заголовок авторизации у всех эндпоинтов `/api/`;
|
|
- таблица токенов: владелец, имя, отпечаток, время выпуска и последнего
|
|
обращения, и её миграция;
|
|
- эндпоинты выпуска, перечня и отзыва токена;
|
|
- `docs/security.md` — второй способ представиться и хранение отпечатка;
|
|
- `README.md` — пример вызова API скриптом.
|
|
|
|
## Критерии приёмки
|
|
|
|
- Запрос с годным токеном заводит задачу от имени его владельца. Оракул — тест
|
|
API: задача в репозитории с владельцем токена.
|
|
- Запрос без токена и с отозванным токеном получает `401` и задачи не заводит.
|
|
Оракул — тест на трёх случаях: нет заголовка, чужая строка, отозванный токен.
|
|
- Полное значение токена показывается один раз при выпуске, в базе лежит только
|
|
отпечаток. Оракул — тест: повторное чтение токена отдаёт имя и отпечаток,
|
|
значение отсутствует, плюс поиск значения по логу пуст.
|
|
- Токен не попадает ни в журнал, ни в текст ошибки. Оракул — тест приёма с
|
|
токеном: в перехваченном журнале значения нет.
|
|
|
|
## Рамки
|
|
|
|
Учётные записи по-прежнему заводит Authelia — свою регистрацию не делаем.
|
|
Сроков жизни и областей действия у токена не заводим: он даёт права владельца
|
|
целиком. Берётся после `oidc-login`: до неё представляться некому. Экрана выпуска здесь
|
|
нет — приложения ещё не существует, токен выпускается запросом к API; место
|
|
токена на экране настроек заводит `settings-screen`.
|