2013-02-11 56 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