Как добавить заголовок в `AuthenticationKeyGenerator`? - PullRequest
0 голосов
/ 12 сентября 2018

Контекст: Несколько устройств могут использовать одинаковые учетные данные клиента, и в результате они совместно используют токены, что может привести к состязанию, когда два или более устройств пытаются обновить токен. Идентификацию устройства можно найти в заголовках, поэтому пользовательская реализация AuthenticationKeyGenerator может использовать идентификатор устройства для генерации токена для каждого устройства. Идентификатор устройства можно сохранить в качестве дополнительного параметра в OAuth2Request.getExtensions().

Проблема: Как я уже говорил, идентификатор устройства не приходит из параметров GET / POST, поэтому он отсутствует в OAuth2Request.getRequestParameters(), но может быть найден в заголовках. Но OAuth2Request создается в DefaultOAuth2RequestFactory (реализация OAuth2RequestFactory), который не имеет доступа к исходному http-запросу для копирования информации из заголовков и добавления ее в OAuth2Request.getExtensions()

Каков наилучший способ перехватить заголовок и сохранить его внутри OAuth2Request.getExtensions(), чтобы AuthenticationKeyGenerator позже использовал его как часть ключа?

1 Ответ

0 голосов
/ 27 июля 2019

У меня была похожая реализация AuthenticationKeyGenerator, где устройство / пользовательский агент использовалось для генерации ключа для auth_to_access с использованием Redis в качестве хранилища токенов.

Ниже приведенофрагмент кода того, как я захватил пользовательский агент в моей пользовательской реализации AuthenticationKeyGenerator

HttpServletRequest request = ((ServletRequestAttributes)RequestContextHolder.currentRequestAttributes()).getRequest();

String userAgent = request.getHeader("User-Agent");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...