Когда Spring Security OAuth2 проверяет срок действия токена доступа? - PullRequest
0 голосов
/ 05 мая 2020

Я отлаживаю сценарий в своей производственной среде, в котором периодически вижу неожиданные ответы HTTP 401 от моего сервера ресурсов. Я использую Spring Security OAuth2 («старые» библиотеки OAuth; до Spring Security 5.2.x и его реализация OAuth2) для обработки запросов и выполнения Authn.

Я наблюдаю следующее:

  1. Пользователь входит в систему в момент времени x (здесь время в секундах) и получает токен доступа. Срок действия этого токена доступа истекает в момент x + 900 (срок действия 15 минут).
  2. В момент x + 480 пользователь делает запрос к защищенной конечной точке.
  3. Запрос занимает много времени. завершено, так что он все еще обрабатывается, когда истекает срок действия токена. В момент времени x + 900 сервер возвращает ответ HTTP 401.

Вопросы:

  1. Действительно ли Spring Security OAuth2 работает именно так? Чтобы быть более конкретным c, отслеживает ли он время истечения срока действия токена и возвращает ли он 401, если запрос все еще обрабатывается, когда срок действия токена истекает? Или на другом конце фильтра безопасности, когда готовится ответ?
  2. Есть ли способ отключить это поведение, чтобы токен проверялся только при первой обработке запроса?

1 Ответ

0 голосов
/ 05 мая 2020

Я посмотрел исходный код для spring-security-oauth2, и это не так, как это работает. Срок действия токена проверяется только один раз в начале обработки запроса.

Я отследил проблему, с которой я столкнулся выше, до проблемы, при которой ресурсы нашего сервера были исчерпаны на определенный период. Когда ресурсы (ЦП; рабочие потоки HTTP-запроса) стали доступны, сервер начал обрабатывать запрос, но к этому времени токен истек.

...