1

请原谅我这个非常愚蠢的问题。

我目前在 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 请求......我显然在这里遗漏了一些东西。谁能指出我正确的方向?

4

1 回答 1

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

于 2016-12-29T05:16:27.330 回答