глобальный фильтр spring-cloud-gateway для извлечения информации о безопасности из токена доступа и передачи ее нисходящим сервисам - PullRequest
1 голос
/ 25 апреля 2019

Я использую Spring-cloud-gateway в качестве ResourceServer и для конкретной реализации хочу извлечь некоторую информацию, например, роли пользователя, из токена доступа JWT, который он получает, к нисходящим сервисам.

I сделал это в реализации GatewayFliter, получив принципал от обмена и приведя его к Аутентификации, а затем получив роли пользователя из токена. Но теперь я хочу сделать это в GlobalFilter, чтобы я мог переместить эту функциональность «безопасности» на глобальный уровень, но тот же блок кода из GatewayFilter не работает в GlobalFilter.

Это кодовый блок, на который я ссылался:



      exchange.getPrincipal()
       .filter(principal -> principal instanceof Authentication)
       .cast(Authentication.class)
       .map(authentication->extractAuthoritiesAndSetThatToRequest(exchange, 
        authentication))
       .defaultIfEmpty(exchange).flatMap(chain::filter);

Вышеупомянутый блок работает в классе, который расширяет AbstractGatewayFilterFactory , и метод extractAuthoritiesAndSetThatToRequest выполняется, но не в классе, который реализует GlobalFilter . Я хочу такую ​​же функциональность в GlobalFilter. Возможно, я что-то упускаю. Не могли бы вы помочь?

...