Я использую аутентификацию клиента Spring Security OAuth2 с типом предоставления кода для анонимной аутентификации.
Встроенный OAuth2AuthorizationCodeGrantFilter
выполняет перенаправление после успешной аутентификации анонимного участника. Он перенаправляет на URL-адрес, полученный с помощью запроса, хранящегося в RequestCache
, или использует URL-адрес по умолчанию (oauth2/code/{registrationId}
), извлеченный из параметров запроса.
Код OAuth2AuthorizationCodeGrantFilter
, о котором идет речь:
String redirectUrl = authorizationResponse.getRedirectUri();
SavedRequest savedRequest = this.requestCache.getRequest(request, response);
if (savedRequest != null) {
redirectUrl = savedRequest.getRedirectUrl();
this.requestCache.removeRequest(request, response);
}
this.redirectStrategy.sendRedirect(request, response, redirectUrl);
Я могу использовать кеш запросов для хранения запроса на перенаправление. Но интерфейс RequestCache
не позволяет мне указать произвольный URL-адрес для перенаправления, используется только существующий (неизменяемый) HttpServletRequest.
Мне нужно выполнить перенаправление на указанный c URL-адрес на основе немного деловой логики c. Как я могу форсировать произвольный URL перенаправления?