Files
transcriber/tasks/items/api-tokens.md
T
av d2c85af80a tasks: целевая картина пересобрана — три цели, тринадцать задач, сдвинутые границы
- паспорт: сервис объявлен архивом с бессрочным хранением записей и текстов,
  машинная вычитка расшифровки внутри границ, приложение — основной вход;
  добавлены две границы: не файловое хранилище общего назначения и не биллинг;
- заведены цели upload-reliability, user-settings, usage-stats и тринадцать
  задач; очередь пересобрана — сперва починки, затем разведки о хранилище,
  затем доступ и владелец, и только потом экраны;
- архитектура: четыре новых открытых вопроса — приём большого файла, учёт
  расхода, срок хранения, потолок шести часов.
2026-08-11 10:05:22 +03:00

3.1 KiB

Пускать скрипты в API по личным токенам

  • Тип: feature
  • Категория: Очередь
  • Зачем: Вход через OIDC закрывает API целиком, а скрипту браузерная сессия недоступна: автоматизировать загрузку станет нечем.
  • Теги: goal:multi-user

Двигает пункты 1 и 6 «Завершения» цели: запрос без токена не проходит (пункт 1), а скрипт ходит в API по токену, выпущенному пользователем, и видит ровно его записи (пункт 6).

Токен принадлежит учётной записи и даёт ровно её права: записи, заведённые по токену, видны владельцу в приложении, и наоборот.

Затрагивает

  • заголовок авторизации у всех эндпоинтов /api/;
  • таблица токенов: владелец, имя, отпечаток, время выпуска и последнего обращения, и её миграция;
  • эндпоинты выпуска, перечня и отзыва токена;
  • экран настроек — место, где токен выпускают и отзывают;
  • docs/security.md — второй способ представиться и хранение отпечатка;
  • README.md — пример вызова API скриптом.

Критерии приёмки

  • Запрос с годным токеном заводит задачу от имени его владельца. Оракул — тест API: задача в репозитории с владельцем токена.
  • Запрос без токена и с отозванным токеном получает 401 и задачи не заводит. Оракул — тест на трёх случаях: нет заголовка, чужая строка, отозванный токен.
  • Полное значение токена показывается один раз при выпуске, в базе лежит только отпечаток. Оракул — тест: повторное чтение токена отдаёт имя и отпечаток, значение отсутствует, плюс поиск значения по логу пуст.
  • Токен не попадает ни в журнал, ни в текст ошибки. Оракул — тест приёма с токеном: в перехваченном журнале значения нет.

Рамки

Учётные записи по-прежнему заводит Authelia — свою регистрацию не делаем. Сроков жизни и областей действия у токена не заводим: он даёт права владельца целиком. Берётся после oidc-login: до неё представляться некому.