Spring OAuth2 Auth Server: определенный фильтр / oauth / token? - PullRequest
0 голосов
/ 24 апреля 2018

В настоящее время я проверяю все входящие Authorization заголовки для значений токенов JWT, чтобы я мог проверить, занесены ли эти токены в черный список. Я реализовал пользовательский Filter для этого.

Проблема в том, что этот фильтр обрабатывает все запросы, поступающие на сервер. Я бы хотел обрабатывать только те запросы, которые приходят к конечной точке /oauth/token.

Возможно ли реализовать это в Spring OAuth2 Auth Server?

Ответы [ 3 ]

0 голосов
/ 24 апреля 2018

Если ваш пользовательский фильтр расширяет OncePerRequestFilter, вы можете переопределить метод shouldNotFilter.

@Override
protected boolean shouldNotFilter(HttpServletRequest request) throws ServletException {
    return !new AntPathMatcher().match("/oauth/token", request.getServletPath());
}

Из документа

Может быть переопределено в подклассах для пользовательского управления фильтрацией, возвращая true, чтобы избежать фильтрации данного запроса.

0 голосов
/ 24 апреля 2018

У вашего вопроса есть два аспекта: один - «Порядок фильтрации», а второй - только фильтрация определенного пути URL.И то, и другое можно решить, используя FilterRegistrationBean для введения вашего фильтра.Смотрите пример ниже.

@Bean
public FilterRegistrationBean securityFilter() {
    Filter f = new MySecurityFilter();
    FilterRegistrationBean frb = new FilterRegistrationBean(f);
    frb.setOrder(SecurityProperties.ACCESS_OVERRIDE_ORDER);
    frb.setUrlPatterns(Arrays.asList("/oauth/token"));
    return frb;
}
0 голосов
/ 24 апреля 2018

Это вопрос приоритета вашего фильтра.Добавьте:

@Order(SecurityProperties.ACCESS_OVERRIDE_ORDER) 

К вашему WebSecurityConfiguration должна помочь вам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...