一、增加maven 依賴
-
<dependency>
-
<groupId>org.apache.cxf
</groupId>
-
<artifactId>cxf-rt-ws-security
</artifactId>
-
<version>3.1.8
</version>
-
</dependency>
二、spring-context配置攔截器
-
<jaxws:endpoint >
-
<jaxws:inInterceptors>
-
<bean class="org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor">
-
<constructor-arg>
-
<map>
-
<entry key="action" value="UsernameToken" />
-
<entry key="passwordType" value="PasswordDigest" />
-
<entry key="passwordCallbackRef">
-
<bean class="com.interceptor.PasswordCallback">
</bean>
-
</entry>
-
</map>
-
</constructor-arg>
-
</bean>
-
</jaxws:inInterceptors>
-
</jaxws:endpoint>
三、編寫PasswordCallback
-
import javax.security.auth.callback.Callback;
-
import javax.security.auth.callback.CallbackHandler;
-
import javax.security.auth.callback.UnsupportedCallbackException;
-
-
import org.apache.wss4j.common.ext.WSPasswordCallback;
-
-
import java.io.IOException;
-
-
-
public
class PasswordCallback implements CallbackHandler {
-
public void handle(Callback[] callbacks) throws IOException,
-
UnsupportedCallbackException {
-
WSPasswordCallback pc = (WSPasswordCallback) callbacks[
0];
-
String idf = pc.getIdentifier();
//ws傳過來的用戶名
-
String pwd =
null;
//需查數據庫獲得密碼
-
String cfgUser =
"aaa";
-
if(cfgUser!=
null && cfgUser.equals(idf)) {
-
pwd =
"123456";
-
}
else {
-
pwd =
"error";
-
}
-
pc.setPassword(pwd);
-
}
-
-
}
四、soapUI 調用時設置用戶名密碼
右鍵,show Interface view