webservice添加用户密码验证

一、增加maven 依赖

  1. <dependency>
  2. <groupId>org.apache.cxf</groupId>
  3. <artifactId>cxf-rt-ws-security</artifactId>
  4. <version>3.1.8</version>
  5. </dependency>

二、spring-context配置拦截器

  1. <jaxws:endpoint >
  2. <jaxws:inInterceptors>
  3. <bean class="org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor">
  4. <constructor-arg>
  5. <map>
  6. <entry key="action" value="UsernameToken" />
  7. <entry key="passwordType" value="PasswordDigest" />
  8. <entry key="passwordCallbackRef">
  9. <bean class="com.interceptor.PasswordCallback"></bean>
  10. </entry>
  11. </map>
  12. </constructor-arg>
  13. </bean>
  14. </jaxws:inInterceptors>
  15. </jaxws:endpoint>

三、编写PasswordCallback

  1. import javax.security.auth.callback.Callback;
  2. import javax.security.auth.callback.CallbackHandler;
  3. import javax.security.auth.callback.UnsupportedCallbackException;
  4. import org.apache.wss4j.common.ext.WSPasswordCallback;
  5. import java.io.IOException;
  6. public class PasswordCallback implements CallbackHandler {
  7. public void handle(Callback[] callbacks) throws IOException,
  8. UnsupportedCallbackException {
  9. WSPasswordCallback pc = (WSPasswordCallback) callbacks[0];
  10. String idf = pc.getIdentifier();//ws传过来的用户名
  11. String pwd = null;//需查数据库获得密码
  12. String cfgUser = "aaa";
  13. if(cfgUser!=null && cfgUser.equals(idf)) {
  14. pwd = "123456";
  15. }else {
  16. pwd = "error";
  17. }
  18. pc.setPassword(pwd);
  19. }
  20. }

四、soapUI 调用时设置用户名密码

右键,show Interface view

出处:https://blog.csdn.net/mxia520/article/details/84109041
posted @ 2021-02-06 09:19  十点书屋  阅读(1312)  评论(0)    收藏  举报