Русский
  • iat
  • время выдачи
  • неверное iat
  • неверное время выдачи
  • id-токен

Понимание важности указания токена "iat" и устранение ошибки "Неверное время выдачи"

В этом посте мы рассмотрим, насколько важно требование "iat" в токене идентификации и как устранить ошибку "Неверное время выдачи в токене идентификации".

Charles
Charles
Developer

Понимание важности указания токена "iat" и устранение ошибки "Неверное время выдачи"

Фон

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

В этом посте мы рассмотрим, почему эта проблема происходит в Logto, и вооружим вас знаниями, как с ней справиться.

Введение

В OAuth 2.0 и OpenID Connect (OIDC) ID-токены играют жизненно важную роль в безопасной передаче информации о личности пользователя между сторонами. Одно из утверждений в ID-токене называется "iat" (время выдачи), представляя временную метку, в которой ID-токен был выдан сервером авторизации.

Почему требование "iat" важно?

  1. Свежесть и истечение срока токена: Указание "iat" предоставляет важную информацию для оценки свежести ID-токена. Сравнивая временную метку "iat" с текущим временем, стороны, полагающиеся на токен, могут определить, насколько недавно токен был выдан. Эта информация ценна для приложений, которые нуждаются в обеспечении использования актуальной информации о личности.
  2. Противодействие атакам повторного воспроизведения: Указание "iat" играет важную роль в противодействии атакам повторного воспроизведения. В атаке повторного воспроизведения противник пытается повторно использовать ранее перехваченный токен. Указание "iat" помогает обнаружить такие атаки, позволяя стороне установить окно терпимости для возраста токена. Токены за пределами этого окна могут считаться недействительными.
  3. Обеспечение соблюдения политик использования токенов: Приложения часто накладывают ограничения на максимальную допустимую давность ID-токена по соображениям безопасности. Указание "iat" позволяет сторонам, полагающимся на токен, соблюдать эти политики, обеспечивая, чтобы токены использовались в рамках определенного временного интервала. Это помогает минимизировать риски, связанные с использованием устаревших токенов.
  4. Поддержка отзыва токенов: В некоторых сценариях сервер авторизации может потребовать отозвать выданные токены. Указание "iat" играет важную роль в процессах отзыва токенов, предоставляя четкую временную метку, когда токен был выдан. Это упрощает идентификацию и отзыв конкретных токенов на основе времени их выдачи.

Лучшие практики для работы с указанием "iat"

  • Проверяйте указание "iat": Стороны, полагающиеся на токен, всегда должны проверять указание "iat", чтобы убедиться, что оно соответствует допустимому диапазону. Этот диапазон может варьироваться в зависимости от конкретных требований безопасности приложения.
  • Учитывайте рассогласование времени: Допускайте некоторую степень рассогласования времени при сравнении временной метки "iat" с текущим временем. Рассогласование времени учитывает любые возможные временные различия между сервером авторизации и полагающейся стороной.
  • Устанавливайте политики истечения действия токенов: Используйте указание "iat" в сочетании с указанием "exp" (время истечения) для обеспечения комплексных политик использования токенов, улучшая общую безопасность приложения.

Устранение неполадок

Теперь основная причина печально известной ошибки "Неверное время выдачи" почти ясна.

Для противодействия атакам повторного воспроизведения и учета рассогласования времени Logto ранее установил окно терпимости в 60 секунд для ID-токенов. Любая полагающаяся сторона, которая имеет разницу во времени более 60 секунд от мирового времени, считается потенциально подверженной риску и не пройдет проверку ID-токена. Таким образом, ошибка "Неверное время выдачи".

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

Более того, в сценариях SSO разница во временах между различными клиентами и поставщиком SSO может быть еще больше.

Решение

Чтобы снизить неудобства и также учесть меры безопасности, Logto теперь увеличил допуск по "iat" с 60 секунд до 5 минут для аутентификаций, не связанных с SSO, и до 10 минут для сценариев SSO.

Между тем, вы можете проверить, синхронизировано ли время на вашем компьютере с мировым временем, просто используя этот удобный сайт: https://time.is Синхронизируйте время вручную или переключитесь на другой сервер времени, чтобы убедиться, что разница во времени всегда находится в пределах нашего окна терпимости.

Заключение

Указание "iat" в ID-токенах является ключевым элементом для повышения безопасности управления идентификацией и доступом в современных приложениях. Внедрение лучших практик для работы с указанием "iat" обеспечивает надежный и безопасный процесс аутентификации пользователя.

Также убедитесь, что время на вашем компьютере всегда синхронизировано с сервером мирового времени.