我有一种情况,我有一个RESTful服务,它使用预先认证的令牌进行身份验证。我已经实现了自己的preAuth过滤器,而且效果很好。我的问题是发送到我的服务的一些请求包括BasicAuthorization,这不适用于我的应用程序。 (我希望他们没有,他们不应该,但他们这样做,我无法控制它。)
现在,Spring Security似乎自动生成了一个BasicAuthorization过滤器,但该过滤器正在捕获这些不相关的身份验证标头,然后抛出错误:
Error 401 No AuthenticationProvider found for org.springframework.security.authentication.UsernamePasswordAuthenticationToken
所以我想关闭我在Spring Security中没有使用的过滤器,但我无法弄清楚如何。我知道我可以创建虚拟过滤器并替换自动过滤器,或者我可以在应用程序进入过滤器链之前删除所有基本的Auth标头,但这些看起来都像黑客。
当我查看spring安全过滤器文档时,我发现the part that shows you how to add a FilterChainProxy,但似乎我不得不手动创建Spring安全性的所有bean。具体来说,我到了需要AccessDecisionManager的部分,但我认为这就是我的
<http use-expressions="true" create-session="stateless"
authentication-manager-ref="authenticationManager">
<intercept-url pattern=[etc ...]
东西是为了,我仍然想要使用它。有人有什么建议吗?
答案 0 :(得分:1)
看了一会儿之后,事实证明我的例子不完整。我正在使用baeldung的Spring安全性和REST服务指南,并愚蠢地包括<http-basic />
。所以...抱歉这个坏问题。