Кратко
- RFC9470 позволяет требовать более сильную или более недавнюю аутентификацию, связанную с токеном доступа. У выпуска другой отсчёт времени: обновления из одного ответа авторизации сохраняют сведения исходного события.
- Ресурсу нужны реальные сведения через выбранный способ проверки. Расширение рекомендует выполнить запрошенное условие контекста либо явно завершить запрос ошибкой, а не повторно выдавать неподходящие токены.
- Действительность токена, давность и контекст аутентификации, объём разрешений и завершение операции — разные утверждения. Общий контракт не превращает OAuth в протокол аутентификации и не требует центрального одобрения каждого действия.
Что именно обновилось в отчёте
Представим эксплуатационную панель, на которой токены непрерывно выдаются заново, а служба остаётся доступной. Защищённый ресурс требует недавней активной аутентификации пользователя. Но новые токены происходят из прежнего ответа авторизации, без нового пользовательского события. Панель может быть совершенно точна: выпуски состоялись. Она лишь не устанавливает условие, которое ресурс должен проверить о пользователе.
Это гипотетический сценарий проектирования, а не обнаруженный исследованием сбой поставщика. Он разделяет два отсчёта времени до того, как оба назовут свежими. Новый токен может оставаться связанным с более старой аутентификацией. И наоборот, если фактическое событие уже удовлетворяет политике, не возникает универсальной обязанности заставлять пользователя взаимодействовать заново при каждой операции. Важны конкретное правило и его свидетельства, а не общее требование новых экранов входа.
RFC9470, опубликованный в сентябре 2023 года, описывает механизм OAuth для запроса дополнительной аутентификации. Ресурс может сообщить, что сила или давность события, связанного с токеном, не отвечает требованиям. Саму механику аутентификации документ не определяет. Он полагается на отдельный слой и прямо запрещает использовать эту спецификацию для представления OAuth как протокола аутентификации.
Граница ограничивает и язык обещаний. Ещё один запрос авторизации не обязательно означает новую аутентификацию пользователя. Получение токена не гарантирует достижения запрошенного контекста. Выполнение условия аутентификации тоже не устанавливает достаточность разрешений или завершение действия. Каждое сообщение об успехе должно назвать факт, который оно подтверждает.
Поле iat в JWT показывает предел одного отсчёта. RFC7519 определяет время выпуска JWT, по которому можно оценить возраст токена. Оно не обозначает последнюю активную аутентификацию пользователя. Общая необязательность поля не отменяет требований конкретного профиля. Даже правильно проверенная дата выпуска не позволяет восстановить отсутствующее время пользовательского события.
RFC9068 допускает auth_time, acr и amr в информации аутентификации для соответствующих сценариев авторизации. Их значения фиксированы между токенами, происходящими из одного ответа, в том числе после обновления или обмена. RFC9470 подчёркивает различие для auth_time и acr. Нужно сохранить условие общего происхождения: действительно новое событие пользователя является другим свидетельством. Здесь не доказывается, что ни один мыслимый путь обновления никогда не может включать аутентификацию.
Договор службы поэтому должен объяснять происхождение события, а не только последнюю выдачу учётных данных. Автоматизация может поддерживать доступность и дополнять другие защиты. Она не получает тем самым права сделать недавним то, что не повторилось. Отказ от такого вывода не означает отказа от обновлений: он определяет, какой именно результат был получен.
Запрос ресурса смотрит на событие
insufficient_user_authentication сообщает о невыполненных требованиях аутентификации ресурса. Это не всегда тот же диагноз, что истечение токена или недостаточный объём разрешений. Запрос может содержать acr_values, список принимаемых классов контекста по предпочтению, и max_age, допустимое время после активной аутентификации. Оба могут присутствовать вместе. При недостаточном scope он также может быть указан по правилам Bearer, на которые ссылается документ.
Название класса не выполняет метод аутентификации. OpenID Connect Core требует соглашения о значениях, которые могут зависеть от контекста. Стандартное поле не делает особое обещание поставщика универсальным доказательством метода или уровня гарантий. Ресурс должен понимать, что принимает, а сервер авторизации — какое событие способно удовлетворить этот смысл.
max_age выражает неотрицательное целое число секунд после активного события, не после последнего выпуска. Рассмотрение только новейших учётных данных не устанавливает этот интервал. Это не заключение об уязвимости действующей службы, а определение свидетельства, которое понадобилось бы перед обещанием достаточно недавней аутентификации.
Клиенту рекомендуется перенести имеющиеся параметры в запрос авторизации. Точная передача улучшает координацию, но не доказывает выполнение. Перенаправление, переход пользователя и возврат токена — отдельные процессы. Ресурсу ещё нужно оценить информацию о событии, а не вывести все результаты из успешного прохождения цепочки переходов.
Явная ошибка может быть правильным результатом
В общих правилах OpenID Connect Core acr_values запрашивает добровольно предоставляемое поле. Работа с контекстом в ID Token не гарантирует безусловно любой желаемый уровень. max_age требует попытки активной повторной аутентификации при превышении разрешённого времени и auth_time в возвращаемом токене идентичности. Однако правила ID Token не подтверждают содержание произвольного токена доступа.
RFC9470 описывает токены доступа серверов, соблюдающих его расширение, с acr и auth_time в ответ на соответствующие параметры. Главное — рекомендация считать запрошенный acr необходимым для успешного ответа: выполнить условие либо завершить запрос с unmet_authentication_requirements. Ещё один неподходящий токен только оставил бы клиента в круге повторных требований ресурса.
Преувеличение возможно в обе стороны. Объявить расширение просто игнорируемым пожеланием — ослабить рекомендованное поведение для токенов доступа. Вывести из каждого вызова гарантию успеха — добавить более широкое обещание. Явный отказ может быть надлежащим ответом, если условие не достигнуто. Ошибка OpenID обозначает это состояние, не создавая разрешений и не подтверждая завершение действия.
Повторный отказ в гипотетической паре мог бы происходить из недостижимого класса, недостаточных сведений о времени или несовместимых условий. Ни одна такая ситуация не наблюдалась здесь в продукте. Они показывают, почему последний выпуск не локализует конфликт. Паре служб нужно объяснение достижимых требований и завершающих результатов, а не только перспектива ещё одной попытки.
Чёткая работа с ошибкой поэтому относится к ответственности. Выпуск может выглядеть успешным у сервера авторизации и оставаться непригодным для ресурса. Считать эти разные успехи одним продвижением — скрыть невыполненное условие. Улучшение пользовательского опыта не должно означать замену точного отрицательного результата очередным местным сообщением о выдаче.
Способ проверки входит в описание обязательств
RFC9470 связывает сведения события с двумя распространёнными методами: JWT-токенами доступа по применимым правилам проверки и интроспекцией OAuth. Другие кодировки и методы возможны, но находятся за рамками документа. Необходимость сведений об аутентификации не принуждает всех участников к одной эксплуатационной архитектуре.
В JWT чтение auth_time и acr не заменяет проверку токена. Издатель, предполагаемый получатель и другие условия профиля остаются значимыми; затем следует интерпретация события. Значение недоверенного ввода не становится свидетельством лишь из-за знакомого имени поля. Это концептуальное различие, не аудит безопасности конкретной реализации.
При интроспекции active:true обозначает состояние токена, не выполнение всех политик. Событие может быть слишком давним, а контекст — неприемлемым. RFC7662 предоставляет состояние и метаданные, RFC9470 добавляет поля ответа об аутентификации. Их нужно оценить отдельно от признака активности.
Отсюда не возникает универсальная обязанность обращаться к центральной онлайн-службе при каждой операции. JWT, в свою очередь, не делает автономную проверку достаточной везде. Команда эксплуатации выбирает путь, соответствующий ответственности и другим условиям. Общий контракт может описывать сведения, не предписывая всем ресурсам один режим работы.
Метаданные сервера авторизации дают другой сигнал. acr_values_supported по RFC9470 объявляет понимание и соблюдение соответствующих параметров. Это возможность, не запись конкретного успешного пользовательского события, его фактической давности или результата ресурса. Каталог возможностей не становится доказательством события потому, что поступает от того же поставщика.
Выполненное условие не создаёт дополнительных прав
Правила обновления OAuth запрещают запрашивать scope за пределами исходного предоставления; при пропуске сохраняется прежний объём. Аутентификация клиента на конечной точке выдачи также не является недавней аутентификацией конечного пользователя. Автоматическая транзакция не свидетельствует ни о новом взаимодействии человека, ни о расширении его полномочий.
Ресурс может учитывать качество аутентификации как условие доступа, не объявляя его всей проверкой. Действительность, получатель, объём прав, контекст и давность могут иметь отдельные критерии. Выполнение одного не порождает остальные. Даже правильное решение о доступе не доказывает полностью исполненную операцию. Утверждению об успехе нужен названный предмет свидетельства.
RFC9470 оставляет ограничения политик пары ресурс/сервер авторизации за своими рамками. Рабочая среда может ставить условия, которые пользователи не в состоянии выполнить или которые дают нежелательный опыт. Фактические средства, например необходимые устройства, не заключены просто в имени класса. Точно переданное требование не делает каждое сочетание выполнимым для каждого человека.
Вызов не доказывает даже предварительную проверку входного токена. Спецификация допускает эту логику до или после обычной валидации и ответ без предварительного подтверждения действительного токена. Она отмечает раскрытие требуемых свойств стороне, которая ещё не показала возможность получить соответствующие учётные данные. Порядок имеет последствия; это не придуманное статьёй универсальное предписание.
Значения контекста могут выдавать подсказки о привилегированных пользователях и других целях. Механизм, вызывающий взаимодействие человека, также может использоваться злонамеренным ресурсом. Здесь не наблюдались атаки или пострадавшие. Источники объясняют возможности и необходимость осторожности, не измеряя частоту в текущих службах.
RFC9700 даёт обновлённый контекст безопасности OAuth, не новое время аутентификации. Ротация токенов обновления и улучшенная защита учётных данных решают свои вопросы. Они не свидетельствуют автоматически о новом пользовательском событии. Полезные меры могут дополнять друг друга, не выступая взаимозаменяемыми доказательствами всех остальных условий.
Идеи Lu Heng о минимальной начальной спецификации, локальных будущих решениях и добровольном принятии служат редакционным ориентиром. Общая основа делает требования и события понятными. Подходящая пара служб объясняет политики и достижимые условия; участники выбирают на этой основе. Дополнительный центр разрешения каждого действия не нужен, но видимая местная ответственность необходима.
Новый токен может участвовать в обоснованном решении. Он не заменяет новое событие аутентификации, выполненное условие или завершённое действие. Преимущество общего контракта — координировать сведения, а не отменять различия. Так отсчёт от выпуска не получает полномочия, которых производство учётных данных не даёт.
Источники
- RFC9470: запрос дополнительной аутентификации в OAuth
- Сведения о документе RFC9470
- RFC9068: JWT-токены доступа и сведения аутентификации
- RFC7662: интроспекция токенов OAuth
- RFC7519: поля JWT и время выпуска
- RFC6750: применение токенов Bearer
- RFC6749: авторизация OAuth и обновление
- RFC8414: метаданные сервера авторизации
- OpenID Connect Core 1.0
- OpenID Connect Discovery 1.0
- OpenID Connect Unmet Authentication Requirements 1.0
- RFC9700: актуальная практика безопасности OAuth
- Lu Heng: минимальная основа и локальные будущие решения
- Lu Heng: The Policy Mirror
Обзор для участников
Подробный контекст профиля
Войдите с подходящим уровнем подписки, чтобы открыть полный обзор и примечания к источникам.
Только для Стратегического сообщества
Стратегическое сообщество
Открыто всем читателям. Вступите и войдите, чтобы открыть обзоры профилей.
Вступить в Стратегическое сообществоТолько для Альянса лидеров
Альянс лидеров
Для проверенных владельцев IP-активов и руководителей. Войдите, чтобы открыть обзоры Альянса.
Вступить в Альянс лидеров
