我有一个 RESTful 服务使用预身份验证令牌进行身份验证的情况。我已经实现了自己的 preAuth 过滤器,效果很好。我的问题是发送到我的服务的一些请求包括不适合我的应用程序的 BasicAuthorization。(我希望他们没有,他们不应该,但他们这样做了,我无法控制。)
现在,Spring Security 似乎自动创建了一个 BasicAuthorization 过滤器,但该过滤器正在捕获这些不相关的身份验证标头,然后抛出错误:
Error 401 No AuthenticationProvider found for org.springframework.security.authentication.UsernamePasswordAuthenticationToken
所以我想关闭我在 Spring Security 中没有使用的过滤器,但我不知道怎么做。我知道我可以创建虚拟过滤器并替换自动过滤器,或者我可以在应用程序进入过滤器链之前删除所有基本的 Auth 标头,但这两个看起来都像黑客。
当我查看 spring 安全过滤器文档时,我找到了向您展示如何添加 FilterChainProxy 的部分,但似乎我必须以这种方式手动创建所有用于 spring 安全的 bean。具体来说,我到了需要 AccessDecisionManager 的部分,但我认为这就是我的
<http use-expressions="true" create-session="stateless"
authentication-manager-ref="authenticationManager">
<intercept-url pattern=[etc ...]
东西是为了,我仍然想使用它。有人有什么建议吗?