我正在實現一個使用駱駝cxf的web服務來部署在Karaf中。 我正在使用karaf附帶的pax web。我在pom中使用cxf codegen插件來執行java的wsdl。駱駝cxf pax-web處理WS-Security用戶名令牌
我在RouteBuilder Java DSL中定義了cxf uri和路由。 blueprint.xml只包含一些bean並引用RouteBuilder。
final String cxfUri =
String.format("cxf:%s?serviceClass=%s&wsdlURL=wsdl/Event.wsdl",
"/Event.jws", com.example.EventPortType.class.getCanonicalName());
我用pax-web(jetty.xml)設置了ssl。如果我發送帶有用戶名和密碼的WSSE安全標頭,它會生成一個MustUnderstand soap故障。
<wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" S:mustUnderstand="1">
<wsse:UsernameToken xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="Id-LdZa8aaGdy7mWQWXLp_zpbfg">
<wsse:Username>xxx</wsse:Username>
<wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">xxx</wsse:Password>
</wsse:UsernameToken>
</wsse:Security>
輸入請求無法更改。 我得到這個例外。
<soap:Fault>
<faultcode>soap:MustUnderstand</faultcode>
<faultstring>MustUnderstand headers: [{http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd}Security] are not understood.</faultstring>
</soap:Fault>
如何保護cxf端點以驗證請求?
謝謝。
遵循駱駝分配2.15.1 - camel-example-reportincident-wssecurity的例子,它的工作原理。它使用WSSJInterceptor和CallbackHandler。 – user127091