Можно ли добавить тело ответа, используя настроенный ServerAuthenticationEntryPoint? - PullRequest
0 голосов
/ 04 июля 2019

Я видел, что в версии 5.2.0.M1 невозможно настроить ServerAuthenticationEntryPoint при использовании сервера ресурсов OAuth2 из Spring Security в реактивном стеке (Webflux).

(см. Также https://github.com/spring-projects/spring-security/issues/6052)

Однако, когда я теперь пытался написать свой собственный ServerAuthenticationEntryPoint, я спрашивал себя, как добавить тело в ответ http? Метод commence (...) возвращает Mono, и я не нашелеще способ указать где-нибудь тело.

Может кто-нибудь подсказать, как это сделать (если это возможно)?

1 Ответ

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

Тем временем я нашел способ решить эту проблему. При добавлении только лямбды в конфигурацию ServerHttpSecurity в классе WebSecurityConfiguration , как этот

http
  . ...
  .oauth2ResourceServer()
  .authenticationEntryPoint((exchange, exception) -> Mono.error(exception));

Я могу обработать ошибку в моей пользовательской реализации AbstractErrorWebExceptionHandler , где я в любом случае обрабатываю все исключения, не связанные с безопасностью пружины. Это работает. Мне пришлось скопировать немного логики из BearerTokenServerAuthenticationEntryPoint , чтобы получить правильный заголовок WWW-Authenticate в ответе, но теперь он отлично работает с настраиваемым телом в случае любого исключения, возникающего из весенней безопасности.

...