Связь между WebSecurityConfigurerAdapter и ResourceServerConfigurerAdapter

Я пытаюсь интегрировать Spring OAuth2 в Spring MVC REST. В большинстве примеров Spring OAuth2 есть только ResourceServerConfigurerAdapter, а в некоторых также есть WebSecurityConfigurerAdapter. Я не собираюсь интегрировать OAuth с Google, Facebook и т. Д. Я пытаюсь предоставить аутентификацию на основе токенов для Spring MVC REST, которая в настоящее время основана на Basic аутентификации. Может ли кто-нибудь объяснить мне, что требуется, а что нет, или хороший ресурс, чтобы понять интеграцию Spring MVC REST + OAuth на одном сервере?

В настоящее время мой POC работает без WebSecurityConfigurerAdapter, но с ResourceServerConfigurerAdapter вместе с AuthorizationServerConfigurerAdapter. Похоже, ResourceServerConfigurerAdapter достаточно. Теперь я не уверен, что мне делать с моим существующим WebSecurityConfigurerAdapter, которое отлично работает в моем приложении Spring MVC REST.


person sura2k    schedule 27.02.2016    source источник


Ответы (1)


Вот хороший ответ https://stackoverflow.com/a/28604260, похоже, WebSecurityConfigurerAdapter - это порядок, уступающий ResourceServerConfigurerAdapter .

У меня есть WebSecurityConfigurerAdapter и ResourceServerConfigurerAdapter, но конфигурация безопасности конечных точек находится в ResourceServerConfigurerAdapter в разделе:

public void configure(HttpSecurity http) throws Exception {

У меня также есть следующая конфигурация:

security:
    oauth2:
        resource:
            filter-order: 3

В противном случае конфигурация безопасности конечных точек игнорируется (я не знаю почему).

person Florian Courtial    schedule 17.04.2016
comment
это сработало и для меня. с этим мне вообще не нужен WebSecurityConfigurerAdapter - ResourceServerConfigurerAdapter делает все. Я наблюдал цепочку фильтров с помощью logging.level.org.springframework.security: DEBUG в трех тестах. 1. Только ресурс * 2. Ресурс * и Интернет * 3. Ресурс * и Интернет * и filter-order. В случаях 1 и 3: цепочка фильтров была длиной 12 и включала OAuth2AuthenticationProcessingFilter, который давал аутентификацию носителя (по желанию). но в случае 2: ​​цепочка фильтров была 14-длинной, исключая OAuth*Filter, а вместо этого фильтры, такие как User*Password*Filter. - person Birchlabs; 27.09.2017
comment
Если вы нашли какое-либо решение для этого, дайте мне знать, у меня такая же проблема. вот мой вопрос stackoverflow.com / questions / 47627226 / - person Dev Sabby; 04.12.2017
comment
Я думаю, что это хороший ответ, однако, будучи новичком в oauth, я пришел к этому ответу и взял '... похоже, что WebSecurityConfigurerAdapter - это порядок ниже ResourceServerConfigurerAdapte', как если бы ResourceServerConfigurerAdapter мог обрабатываться перед WebSecurityConfigurerAdapter. Чтобы уточнить, WebSecurityConfigurerAdapter, похоже, имеет более высокий приоритет над ResourceServerConfigurerAdapter - person kavrosis; 06.03.2018
comment
Поскольку вы можете определить порядок с помощью @Order, использование ключевого слова order было намеренным. Тем не менее, ваш комментарий имеет смысл. - person Florian Courtial; 06.03.2018
comment
С последних двух дней я пытаюсь найти проблему с CORS, затем я выясняю, реализуя оба, позволяя запрос разрешить из перекрестного происхождения. Я думаю, это связано с ответом @nuvio stackoverflow.com/2s67 а> - person Ravi Parekh; 01.06.2020