2016-03-07 29 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通常在一段时间后自行失效,不幸的是我们需要在调用服务后立即关闭它们。

任何想法?

回答