Как отключить Spring Security Filters
У меня возникла ситуация, когда у меня есть служба RESTful, использующая токен с предварительной аутентификацией для аутентификации. Я реализовал свой собственный фильтр preAuth, и он отлично работает. Моя проблема в том, что некоторые запросы, отправленные на мой сервис, включают BasicAuthorization, который не относится к моему приложению. (Я хотел бы, чтобы они этого не сделали, и не должны, но они делают, и я не могу это контролировать.)
Теперь кажется, что Spring Security автоматически создает фильтр BasicAuthorization, но этот фильтр перехватывает эти неактуальные заголовки аутентификации, а затем выдает ошибку:
Error 401 No AuthenticationProvider found for org.springframework.security.authentication.UsernamePasswordAuthenticationToken
Поэтому я хочу отключить фильтры, которые я не использую в Spring Security, но я не могу понять, как это сделать. Я знаю, что мог бы создать фиктивные фильтры и заменить автофильтры, или я мог бы просто удалить все основные заголовки Auth, прежде чем приложение войдет в цепочку фильтров, но оба они кажутся хаки.
Когда я посмотрел документацию по фильтру безопасности Spring, я обнаружил часть, в которой показано, как добавить FilterChainProxy, но мне кажется, что мне приходится вручную создавать все компоненты для безопасности Spring таким образом. В частности, я попал в ту часть, где вам нужен AccessDecisionManager, но я подумал, что это то, что мой
<http use-expressions="true" create-session="stateless"
authentication-manager-ref="authenticationManager">
<intercept-url pattern=[etc ...]
материал был для, и я все еще хочу использовать это. У кого-нибудь есть предложения?
1 ответ
После некоторого изучения выясняется, что мой пример был неполным. Я использовал пружинную защиту baeldung с сервисным руководством REST и по глупости включил <http-basic />
От этого. Так что... извините за плохой вопрос.