我使用Apache-CXF創建我的web服務客戶端,該客戶端使用ws-security進行UsernameToken
驗證。ws-security - 在每個請求中設置不同的用戶名和密碼
爲了使用相同的憑據爲每個請求我只是添加以下屬性我BindingProvider
(即WS-端口):
Map<String, Object> ctx = bindingProvider.getRequestContext();
ctx.put(SecurityConstants.USERNAME, "myUserName");
ctx.put(SecurityConstants.PASSWORD, "myPassword");
但是,我怎麼可以設置不同的用戶名和密碼的每一個請求?是否有可能爲UsernameTokenInterceptor
添加某種供應商功能以基於每個線程提供證書(例如,通過從ThreadLocal
變量中讀取它們)?
作爲解決辦法我實現了一個SOAPHandler<SOAPMessageContext>
修飾在SOAPHeader
的Security/UsernameToken
部分Username
和Password
值。但是,我更願意添加創建整個安全部分的現有SOAPHandler
或向UsernameTokenInterceptor
提供供應商功能。