0

我有以下项目结构:

基础项目(服务层、模型) web 项目 webservice 项目

其中 web 项目和 web 服务项目都依赖于基础项目并使用它提供的服务。

我大量使用 Spring 框架,这意味着服务是 Spring Bean,其方法由@Secured Annotation 和Spring Security 保护。我创建了一个Voter,扩展了检查客户端权限的 AbstractAclVoter。

Web 项目使用Spring MVC和带有 @Endpoint Annotations 和XwsSecurityInterceptor的 Web 服务项目Spring WS

这是我的问题:

如果调用来自 Web 项目控制器或基础项目的 JUnit 测试,则检查权限,但未检查来自 Web 服务项目的请求是否具有正确的权限 - 我的Voter没有被调用!

  • 这与XwsSecurityInterceptor 有关吗?
  • 我是否也需要Web 服务项目中的DelegatingFilterProxy ?(我没有 ContextLoaderListener 因为一切都是由 MessageDispatcherServlet 配置配置的)
4

2 回答 2

1

具有填充授予权限的用户身份验证对象仅在 Web 上下文中可用,而在您的 Web 服务项目中不可用。当您调用您的 Web 服务应用程序时,您没有相同的安全上下文。所以你的安全标签在那里不起作用。

于 2009-10-14T20:53:58.380 回答
0

Spring Security 集成为 Web 应用程序中的 servlet 过滤器。因此,我假设需要将 DelegatingFilterProxy 添加到 Web 服务项目的 web.xml 中,以便它可以处理发送到该应用程序的请求。

于 2009-10-13T19:12:08.363 回答