我在Red Hat JBoss Fuse(在Fabric中)的CXF中实现了SOAP / REST服务。 我需要使用基本身份验证来保护它,并且必须在LDAP服务器上检查凭据。
这可以在没有自定义拦截器的情况下完成吗?
我是否可以使用容器JAAS安全性(使用LDAP配置)来保护服务,就像我可以保护控制台一样?
答案 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状态下延迟。