Apache CXF - JAX-RS安全性

时间:2014-01-03 22:57:51

标签: java apache tomcat cxf

努力使Kerberos经过身份验证的Web服务正常运行,而Apache CXF似乎符合我的要求,我正在努力开始工作。

托管Tomcat 7和我的超级简单测试服务有效,但我无法弄清楚如何让CXF提供安全性:

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;

    @Path("test")
    public class ItemResource {

        public ItemResource() {
        }


        @GET
        @Produces("application/json")
        public String getJson(@QueryParam("name") int test) {

            return "test";

        }
    }

Web.xml中

    <servlet>
            <init-param>
                <param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
                <param-value>true</param-value>
            </init-param>
    <servlet-name>jersey-serlvet</servlet-name>
    <servlet-class>
                 com.sun.jersey.spi.container.servlet.ServletContainer
            </servlet-class>
    <init-param>
         <param-name>com.sun.jersey.config.property.packages</param-name>
         <param-value>net.example.test/param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

The documentation说我可以使用org.apache.cxf.jaxrs.security.KerberosAuthenticationFilter保护Rest服务,但我不确定如何执行此操作。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:2)

如果你想使用CXF的KerberosAuthenticationFilter,你必须使用CXF作为JAX-RS实现,而不是泽西。

您可以在CXF JAX-RS帮助页面或this tutorial中了解如何执行此操作。首先,您必须从web.xml中删除所有配置,因为它仅对Jersey有效。然后按照教程创建服务。

最后,您必须在提到的文档中添加提到的KerberosAuthenticationFilter到CXF弹簧配置。

修改

因为链接教程确实没有运行我修复了它。您可以从我的github项目RestWithCXF下载它。

您可能还会在CXF发行版的samples\jax_rs中找到有用的示例。