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


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM