2016-03-07 33 views
2

我們使用wsdl2java和cxf codegen插件爲受ws安全保護的服務創建客戶端。取消安全上下文令牌(SCT /取消)

調用通過自動生成的客戶端類(OrganisationsEinheitenCoreService)服務是很容易的:

OrganisationsEinheitenCoreService service = new OrganisationsEinheitenCoreService(); 
IOrganisationsEinheitenCoreService serviceEndpoint = service.getServiceEndpoint(); 

BindingProvider bindingProvider = (BindingProvider) serviceEndpoint; 

Map<String, Object> ctx = bindingProvider.getRequestContext(); 
ctx.put("ws-security.username", "MyUsername"); 
ctx.put("ws-security.password", "MyPassword"); 

ArrayOfStaat staaten = serviceEndpoint.getStaaten(); 

當調用該服務程序的方法「getStaaten」,CXF自動請求的的SecurityContextToken的用戶名和密碼( action = http://docs.oasis-open.org/ws-sx/ws-trust/200512/RST/SCT),然後調用實際方法「getStaaten」。在從服務接收到SCT後,cxf存儲該sct並將其用於下一個呼叫。

由於某些原因,cxf從不呼叫http://docs.oasis-open.org/ws-sx/ws-trust/200512/RST/SCT/Cancel來終止SCT。我們也無法弄清楚如何明確地做到這一點,我們嘗試了幾個方面,比如嘗試使用資源,或者獲取客戶端並調用close方法。

SCT通常在一段時間後自行失效,不幸的是我們需要在調用服務後立即關閉它們。

任何想法?

回答