Кратко

  • Редакция 02 индивидуального Internet-Draft добавляет необязательные и не перечисленные в токене аргументы инструмента. Если необязательный аргумент пропущен, работает значение по умолчанию, которое проверяющий не видит.
  • Запись "*" принимает аргументы, отсутствующие в карте разрешений, в том числе добавленные инструментом позднее. Подпись прежняя, а объём фактических полномочий может стать шире.

Пропуск старый, дверь новая

Организация выдаёт агенту подписанный пропуск на работу с инструментом и задаёт допустимые параметры. Через некоторое время разработчик добавляет в инструмент новую кнопку. Кто разрешил агенту её нажать? Новая редакция проекта Niki Aimable Niyikiza показывает, что ответ может скрываться в одной звёздочке токена. Подпись удостоверяет издателя. Она не подтверждает, что издатель рассмотрел функцию, которой тогда не было.

Объявление от 27 октября и IETF Datatracker фиксируют статус индивидуального Internet-Draft. Предлагаемый AAT позволяет держателю самостоятельно выпустить производный токен с теми же или более узкими правами. При вызове инструмента контрольная точка проверяет цепочку подписей, затем сопоставляет аргументы с картой ограничений последнего токена. Эта проверка знает содержимое карты, но инструмент за её пределами может обновиться.

В версии 01 незаписанные аргументы отклонялись, а записанные были обязательны. В благодарностях к версии 02 автор отмечает независимую реализацию, обнаружившую невозможность ограничить действительно необязательный аргумент при таком закрытом правиле. Теперь запись можно пометить optional: true, а "*" покрывает не названные в карте параметры. Звёздочка допускает любое значение; пустая карта равнозначна ей.

Пустое поле тоже что-то делает

В примере проекта токен привязывает path к одному файлу и ограничивает необязательные числа строк head и tail. Когда агент передаёт head, контролёр проверяет предел. Когда пропускает, инструмент применяет собственное значение по умолчанию. Контролёр не видит его действия. Проект прямо указывает: пропущенный head может привести к выдаче всего файла. Разрешить пропуск — значит доверить инструменту последствия этого пропуска.

Звёздочка действует ещё дольше. Она позволяет аргументы, о которых в момент выдачи токена никто не писал, включая новые параметры после обновления инструмента. Проект советует не применять "*" для инструментов с внешними последствиями. Он также разрешает контрольной точке отклонять аргументы, отсутствующие в опубликованной схеме входных данных инструмента. Но обязательной привязки токена к конкретной версии схемы и повторного разрешения при изменении интерфейса текст не устанавливает. Это решение остаётся у внедряющей стороны.

Успешная проверка подписи отвечает на узкий вопрос: цепочка настоящая, вызов соответствует предъявленной карте. Она не сообщает, кто одобрил новое поле или нынешнее поведение инструмента без старого поля. Для ответа нужны версия инструмента, его схема и запись о том, почему издатель допустил звёздочку. Печать на пропуске не может перечислить будущие кнопки.

Приложение F называет изменения версии 02 нормативными и несовместимыми с реализациями версии 01; необязательные и неименованные аргументы входят в их число. Открытый токен удобнее при развитии инструментов: не требуется переподписывать его после каждого изменения. За удобство платят переносом практической власти к тем, кто меняет интерфейс. Токен внешне тот же, но его охранник смотрит уже на другую дверь.

Первичные документы