CXF,Blueprint,OSGI:保护我的Web服务

时间:2013-02-11 03:08:36

标签: web-services rest cxf blueprint

对不起这个非常无聊的问题。

我目前在CXF上运行了一些RESTful / SOAP Web服务。 (实际上有三个)这是一个样本

<blueprint ...>
 <reference id="myWebServiceRef"
  interface="com.keeboi.samples.MyWebService" />
 <jaxrs:server address="/my-web-service" id="myWebService">
  <jaxrs:serviceBeans>
   <ref component-id="myWebServiceImpl" />
  </jaxrs:serviceBeans>
 </jaxrs:server>
 <bean id="myWebServiceImpl"
  class="com.keeboi.samples.MyWebServiceImpl">
  <property name="myWebService" ref="myWebServiceRef" />
 </bean>
</blueprint>

我通过ajax调用

访问它们
$.ajax({
    url : ws_url + id,
    type : "GET",
    dataType : 'text',
}).done(function(data) {
    // Magic happens
}); 

我希望这些Web服务无法由用户在内部使用时执行。我如何保护这些Web服务?

添加:

<jaxrs:properties>
  <entry key="org.apache.cxf.endpoint.private" value="true" />
</jaxrs:properties>

让他们私密但我的ajax请求无法访问......我显然在这里遗漏了一些东西。有人能指出我正确的方向吗?

1 个答案:

答案 0 :(得分:0)

我不确定ajax部分。但是试着回答cxf安全部分

在蓝图配置中添加以下配置:

 <httpj:engine-factory bus="cxf">
 <httpj:engine port="9081">
<httpj:tlsServerParameters>
  <sec:keyManagers keyPassword="skpass">
       <sec:keyStore type="JKS" password="sspass"
             resource="keystore/serviceKeystore.jks"/>
  </sec:keyManagers>
  <sec:trustManagers>
      <sec:keyStore type="JKS" password="sspass"
            resource="keystore/serviceKeystore.jks"/>
  </sec:trustManagers>
  <sec:cipherSuitesFilter>
    <sec:include>.*_EXPORT_.*</sec:include>
    <sec:include>.*_EXPORT1024_.*</sec:include>
    <sec:include>.*_WITH_DES_.*</sec:include>
    <sec:include>.*_WITH_AES_.*</sec:include>
    <sec:include>.*_WITH_NULL_.*</sec:include>
    <sec:exclude>.*_DH_anon_.*</sec:exclude>
  </sec:cipherSuitesFilter>
  <sec:clientAuthentication want="false" required="false"/>
</httpj:tlsServerParameters>

  

您可以参考[配置SSL]获取更多信息1