使用Spring Web Service添加Spring Security @Secured注释会禁用Web Service端点

时间:2013-02-19 00:49:24

标签: authentication soap spring-security authorization spring-ws

问题:当我在Web服务方法中添加@Secured注释时,端点被禁用意味着在调用ws端点时我得到找不到端点映射错误。 < / p>

背景:我的Spring Web Service受到安全保护,可以使用UsernameToken和Timestamp对消费者进行身份验证,在我添加@Secured以强制执行基于角色的授权之前,该服务非常正常。使用&lt; sws:interceptors&gt;在spring-ws-servlet.xml中配置拦截器。 框架版本:

  • spring ws:2.0.5.RELEASE
  • spring ws security:2.0.5.RELEASE
  • spring security:3.0.7.RELEASE
  • wss4j:1.5.12

这是我正在尝试做的样本。

端点:


...

    @Endpoint
    public class XYZEndpoint implements XYZService{
        @Override
        @PayloadRoot(localPart = XYZ_REQUEST, namespace = NAMESPACE_XYZ)
        //@Secured({"ROLE_XYZ"})
        public XYZResponse produceXYZ(XYZRequest request) {
                    ...
            return new XYZResponse();
        }
    }

...

我正在使用global-method-security来启用@Secured注释,如spring docs所述。

弹簧-WS-servlet.xml中


...

    <security:global-method-security secured-annotations="enabled" />

....

1 个答案:

答案 0 :(得分:1)

我遇到了同样的问题并且能够用

修复它
<security:global-method-security proxy-target-class="true" secured-annotations="enabled"/>