我正在使用最新的Apache CXF創建web服務。我使用org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor
配置了ws-security。在我的passwordCallbackClass
中,我可以通過調用getIdentifier()
類的org.apache.ws.security.WSPasswordCallback
類訪問用戶或標識符。如何讀取ws-security中提供的用戶或標識符
我也用整個設置的彈簧。
我想知道如何訪問代碼中的任何其他地方的標識符?我能想到在我的passwordCallbackClass
中使用ThreadLocal
?另一種方法是在我的所有服務方法參數中定義一個標識符屬性,但這意味着客戶端需要兩次傳遞標識符,一個在安全塊中,另一個在服務調用中?
編輯
我的服務類看起來是這樣的,我需要閱讀標識符sayHi
方法。
@WebService(endpointInterface = "com.webservice.HelloWorld")
public class HelloWorldImpl implements HelloWorld {
public String sayHi(String text) {
return "Hello " + text;
}
}
我的密碼回調方法就是這樣,我可以得到標識符。
public void handle(Callback[] callbacks) throws IOException,UnsupportedCallbackExceptio {
WSPasswordCallback pc = (WSPasswordCallback) callbacks[0];
pc.getIdentifier();
}