2013-02-11 36 views
1

对不起,我很讨厌这个问题。CXF,Blueprint,OSGI:保护我的网络服务

我目前在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请求......我明明在这里的东西。任何人都可以指向正确的方向吗?

回答

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