Безопасность Spring: есть ли способ защитить одну конечную точку в двух цепочках фильтров?

У меня есть два типа пользователей: скажем, администраторы и пользователи. Пользователи аутентифицируются по http basic, а администраторы аутентифицируются по jwt. Итак, у меня есть такие конфигурации в двух @Configuration:

http.cors().and.csrf().disable().and().antMatcher("**/user/**")
            .httpBasic();

и

    http.cors().and().csrf().disable()
                .antMatcher("**/admin/**")
                .authorizeRequests(authorize -> authorize
                        .anyRequest().authenticated())
                .and()
                .oauth2ResourceServer().jwt();

Но у меня есть некоторые конечные точки (скажем, /data), которые должны быть доступны (защищены!) как пользователям, так и администраторам. Есть ли способ настроить что-то подобное, или мне нужно разделить конечные точки /data?

Вы также можете настроить фильтры для конкретных конечных точек. Вы можете написать собственный код в этих фильтрах и обрабатывать любую пользовательскую логику. Другим вариантом было бы использовать AOP для самой функции API и выполнять там пользовательскую обработку.

Vishal 10.12.2020 09:48

Это хорошее предложение, и оно сработало для меня как шарм, я не думал об этом. Пожалуйста, опубликуйте это как ответ, чтобы я мог принять его.

Oolong 10.12.2020 10:01
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
2
430
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы также можете настроить фильтры для конкретных конечных точек. Вы можете написать собственный код в этих фильтрах и обрабатывать любую пользовательскую логику. Другим вариантом было бы использовать AOP для самой функции API и выполнять там пользовательскую обработку.

Другие вопросы по теме