Кратко

  • RFC 9246 требует сохранять имеющиеся значения exp и nbf в токене, создаваемом для перенаправления CDNI. Если их не было, перенаправление не должно добавлять эти поля.
  • Издатель, время выпуска и подходящий контекст получателя или URI могут измениться. Свежая подпись не означает предоставление нового срока доступа.
  • Обновление токенов сегментов — отдельный явно включённый механизм, вычисляющий следующее окончание срока из времени проверки и интервала cdniets.
  • exp необязателен в отдельном токене этого профиля. Поэтому требования приёма, доверие к ключам и реально выполненные проверки важны наряду с сохранением срока.
  • Временные примеры являются анализом опубликованной спецификации, а не воспроизведённой ошибкой CDN, измерением частоты инцидентов или всеобщего внедрения.

Свежая подпись может переносить прежнее ограничение

Система доставки показывает новый токен: он только что выпущен, подписан известным участником и предназначен правильному получателю. На первый взгляд доступ будто бы начался заново. Однако возраст подписанного объекта и оставшийся срок разрешения — разные величины.

При взаимодействии CDN запрос переходит к следующей сети, потому что та лучше подходит для доставки. Получателю может понадобиться подпись доверенного ему издателя, а ресурсу — другой адрес. Создание нового JWT решает эти задачи маршрута. Оно не сообщает автоматически, что кто-то заново разрешил доступ на полную исходную длительность.

Здесь возможна ошибка без подделки. Доверенный участник способен подписать объект, в котором срок изменён не в соответствии с выполняемой операцией. Криптография подтвердит его авторство; вопрос о пределах полномочий останется.

Профиль CDNI прямо ограничивает обычное перенаправление. Имеющийся момент окончания срока передаётся с тем же значением. Время, потраченное на движение между сетями, не возвращается в распоряжение клиента каждой новой подписью.

Что опубликованный стандарт действительно обещает

RFC 9246 опубликован в июне 2022 года как документ IETF Standards Track. RFC Editor указывает статус Proposed Standard. Это профиль использования подписанного JWT для контроля запросов к контенту в связанных сетях доставки; возможна и конфигурация с одной CDN.

Статус документа не является перечнем функций всех продуктов. Поддержка, правила приёма, ключи, включённое обновление и настройки проверки зависят от среды. Здесь не проводилась инвентаризация внедрений и не измерялись результаты реальных запросов после изменения маршрута.

URI Signing также не защищает уже выданный контент как DRM. Условия токена могут ограничить следующий запрос, но не возвращают переданные байты и не удаляют полученную копию. Обещание обратного выходило бы за пределы механизма.

Профиль различает обязанность реализовать обработку поля и обязанность включить поле в каждый отдельный JWT. Контейнер URI обязателен, а exp и nbf могут отсутствовать. Это не разрешение проигнорировать exp, когда он поступил. Это отсутствие универсальной гарантии, что всякий допустимый исходный токен содержит срок.

Если сервис требует окончания срока в каждом исходном разрешении, такой критерий надо установить на соответствующем входе. Одной ссылки на совместимость с CDNI недостаточно. Нельзя принять объект, не соответствующий этому критерию, а затем незаметно дополнить его при перенаправлении и выдать результат за прежнее разрешение.

Сохранение означает то же числовое значение

Раздел 2.1.4 требует: если полученный JWT содержал exp, JWT для последующего перенаправления CDNI тоже должен его содержать с тем же значением. Если exp отсутствовал, обычное перенаправление не должно его добавлять.

Проверяющий участник отклоняет запрос, если время запроса равно exp или позже него. При отсутствии поддержки проверки полученного exp он также обязан отказать. Обнаружение поля не заменяет применения его условия.

nbf задаёт другую границу — начало допустимого использования. Присутствующее значение сохраняется, отсутствующее не добавляется. Запрос раньше nbf отклоняется; равенство с nbf удовлетворяет этому временному условию. Равенство с exp, напротив, уже закрывает окно.

Запрет дополнить бессрочный объект коротким exp может показаться странным. Но перенаправление имеет ограниченное назначение: приспособить полученное разрешение к маршруту, а не заново создать весь набор условий. Даже внешне более строгая добавка меняет авторство условий.

Локальная политика может отклонить исходный токен без требуемого срока. Отдельно уполномоченный участник может предоставить действительно новое разрешение. Последнее не следует называть простым перенаправлением прежнего токена. Для оценки изменения сначала нужно знать выполняемую операцию.

Новый издатель не получает все права на редактирование

При наличии iss токен перенаправления сохраняет это поле, но его значение указывает на CDN, выполняющую новую подпись. Получателю необходима заранее доверенная связь между приемлемым издателем и его ключами; заявленный издатель должен соответствовать ключу подписи.

iat при наличии обновляется до момента выпуска нового JWT, а при отсутствии может добавляться. aud можно приспособить к предусмотренной конфигурацией идентичности в цепочке обработки. Контейнер URI можно изменить в соответствии с перенаправленным адресом.

Это конкретные разрешённые изменения контекста. Они не превращают все остальные поля в свободные параметры. Новое значение iat вместе со старым exp может быть совершенно правильным результатом: новое оформление переносит прежний предел.

iat отвечает на вопрос о времени выпуска объекта, exp — об окончании временного условия доступа. Если компонент автоматически вычисляет exp как текущее время плюс типовой интервал, его применение в обычном перенаправлении способно незаметно превратить передачу полномочия в продление.

JWS предоставляет механизмы целостности. Лучшие практики JWT требуют надлежащей проверки алгоритмов, издателя, аудитории и контекста. Но известный ключ не доказывает, что владелец имел право выполнить любое подписанное изменение.

Распределение ключей и установление доверия не полностью определены профилем. Открытый ключ позволяет проверить без права подписывать. Общий симметричный ключ даёт владельцу и возможность выпускать токены; профиль допускает его для совместимости, но не рекомендует. Асимметричная схема тоже не отменяет необходимости ограничить полномочия уже доверенного издателя.

Потраченное на маршрут время остаётся потраченным

Рассмотрим условную шкалу времени. Исходное разрешение заканчивается в момент 60. Одна сеть перенаправляет запрос в 10, другая — в 20. Издатели, iat и нужные адреса могут измениться, но exp токенов обычного перенаправления остаётся 60.

В 65 это условие уже не разрешает доступ. Если вторая сеть прибавит к своему моменту 20 исходную длительность 60 и установит 80, она продлит разрешение. Подпись и URI могут быть корректны, а преобразование — нет.

Это арифметическая иллюстрация, не наблюдение ошибки конкретной CDN. Она отделяет сохранение абсолютной границы от повторного предоставления того же периода после каждого перехода.

Есть и независимый риск толкования. Общие правила JWT допускают небольшой запас на рассогласование часов для exp и nbf. RFC 9246 запрещает такой запас в этом профиле. Настройка библиотеки, уместная в другом приложении, не становится дополнительным временем доступа CDNI.

Участники должны синхронизировать часы; профиль рекомендует NTP. Выбор реалистичного исходного окна с учётом HTTP и временных сетевых трудностей остаётся допустимым. Скрытая прибавка у каждого проверяющего участника — другая политика. Синхронизация не возмещает задержку маршрута.

Обновление сегментов имеет другое основание

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

Signed Token Renewal позволяет после правильной проверки и успешной выдачи сегмента передать токен для следующего доступа к связанным ресурсам. cdniets обозначает секунды, добавляемые к моменту проверки для получения следующего exp. Требуется и cdnistt, определяющее транспорт.

Проверка в 55 с интервалом 30 может дать следующую границу 85. Это расчёт явно включённого обновления, а не объяснение, почему обычное перенаправление вправе изменить исходный exp 60 на 85.

Транспорт может быть отключён, использовать cookie или строку запроса. Значение ноль указывает на отключение. Если обновление не нужно, профиль рекомендует не включать соответствующую пару полей. Возможность создать подпись не должна считаться неявным правом продолжать доступ.

Скользящее окно между сегментами также не задаёт автоматически абсолютную границу программы или права на услугу. Если нужны обе границы, участники должны согласовать, где проверяется дополнительная. Это вопрос локального соглашения, а не новый стандартный claim, изобретённый анализом.

CDN может проверять и обновлять в пределах делегированного правила без центрального согласования каждого сегмента. Ограничение состоит в том, чтобы не называть обновлением любой недавно подписанный объект ради непредусмотренного продления.

Способ предъявления не заменяет область доступа

cdnistd связывает следующий токен с подмножеством путей, если транспорт допускает такую связь. Отсутствие равно нулю; ноль может означать возврат токена при запросах любого пути. Контейнер URI по-прежнему ограничивает контент.

Междоменные ограничения cookies могут потребовать передачи в строке запроса. Описанная процедура обновления предполагает манифест и сегменты в одном домене, а междоменное перенаправление — при получении манифеста. Удобство транспорта не создаёт полномочий для постороннего адресата.

Контейнер сравнивается с запрошенным URI после удаления пакета подписи, в форме с процентным кодированием. Изменить адрес для достижения разрешённого ресурса — не то же самое, что расширить шаблон на дополнительные ресурсы.

Слишком широкий контейнер без других условий способен стать чрезмерным пропуском; профиль не рекомендует такой общий шаблон как единственное действенное ограничение. Из этого не следует одинаковая слабость всех подписанных URI. Значение имеет конкретный набор условий.

Видимый токен не доказывает выполнение проверки

Архитектура CDNI разделяет политику поставщика контента и исполнение сетями доставки. Метаданные, возможности и маршрутизация помогают выбрать подходящую сеть. Географическая пригодность и объявленная поддержка не доказывают обработку отдельного запроса.

В метаданных URI Signing флаг enforce по умолчанию истинен. При ложном значении получающая CDN не проверяет токен, даже если он присутствует в подписанном адресе. Поэтому наличие подписи в URI не является свидетельством выполнения обязательных для сервиса проверок.

Пустой список издателей тоже не означает доверие ко всему Интернету. Он допускает издателей из хранилища доверенных ключей. Значение по умолчанию зависит от отдельно установленной границы доверия.

jti добавляет необходимость состояния. Присутствующее значение сохраняется при перенаправлении, отсутствующее не добавляется. Профиль требует поддержки хранения и отказа при повторном использовании для того же контента. Одна строка идентификатора эту работу не выполняет.

Важны область, срок удержания и очистка. При отсутствии exp ограниченное хранилище недавнего использования может со временем допустить повтор значения. Общий идентификатор сам по себе не создаёт глобально согласованный реестр однократного потребления между всеми CDN.

Журналирование применения контроля и причин отказа помогает проверке преобразования. Но один признак успеха не доказывает все условия, а диагностика не требует открывать пригодные для использования токены или личные данные.

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

Источники