使用LDAP用户的基本身份验证保护Fuse中的CXF服务

时间:2016-09-14 15:08:00

标签: cxf basic-authentication jbossfuse

我在Red Hat JBoss Fuse(在Fabric中)的CXF中实现了SOAP / REST服务。 我需要使用基本身份验证来保护它,并且必须在LDAP服务器上检查凭据。

这可以在没有自定义拦截器的情况下完成吗?

我是否可以使用容器JAAS安全性(使用LDAP配置)来保护服务,就像我可以保护控制台一样?

2 个答案:

答案 0 :(得分:1)

是的,容器JAAS安全领域可用于保护Web服务。 一个例子是here。 示例页面没有解释实现,但是快速查看blueprint.xml文件会显示以下配置:

<jaxrs:server id="customerService" address="/securecrm">
    <jaxrs:serviceBeans>
        <ref component-id="customerSvc"/>
    </jaxrs:serviceBeans>
    <jaxrs:providers>
        <ref component-id="authenticationFilter"/>
    </jaxrs:providers> 
</jaxrs:server>
<bean id="authenticationFilter" class="org.apache.cxf.jaxrs.security.JAASAuthenticationFilter">
    <!-- Name of the JAAS Context -->
    <property name="contextName" value="karaf"/>
</bean>

所以这只是配置JAAS身份验证过滤器的问题。 “karaf”是容器的默认JAAS领域:用户在etc / users.properties中定义 要定义更多领域,信息为here。 要让用户使用LDAP,请参阅here

答案 1 :(得分:0)

上面的答案是正确的,但请注意,对于更新版本的Fuse(过去6.1),LDAP配置中的“排名”必须大于100才能覆盖默认的karaf领域。

此外,在Fuse 6.2.X中应用了当前补丁后,可以启用LDAP连接的连接池:

C

这对于大量网络服务非常重要。将连接池维护到LDAP服务器。这既避免了连接创建开销,也使得关闭套接字在TIME-WAIT状态下延迟。