5

我有一个 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 ...]

东西是为了,我仍然想使用它。有人有什么建议吗?

4

1 回答 1

2

研究了一段时间后,事实证明我的示例不完整。我将 baeldung 的 spring security 与 REST 服务指南一起使用,并且愚蠢地包含<http-basic />在其中。所以......对不起这个不好的问题。

于 2013-06-11T07:06:45.460 回答