精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Apache CXF實戰之六:創建安全的Web Service

開發 后端
我們在使用Web Service的過程中,很多情況是需要對web service請求做認證的,對于運行在web容器里的應用程序來說,可能會比較簡單一些,通常可以通過filter來做一些處理,但是其實CXF本身也提供了對web service認證的方式。下面來看一下如何實現。

我們在使用Web Service的過程中,很多情況是需要對web service請求做認證的,對于運行在web容器里的應用程序來說,可能會比較簡單一些,通常可以通過filter來做一些處理,但是其實CXF本身也提供了對web service認證的方式。下面來看一下如何實現。

1. 首先是一個簡單pojo

  1. package com.googlecode.garbagecan.cxfstudy.security;  
  2.  
  3. public class User {  
  4.     private String id;  
  5.     private String name;  
  6.     private String password;  
  7.     public String getId() {  
  8.         return id;  
  9.     }  
  10.     public void setId(String id) {  
  11.         this.id = id;  
  12.     }  
  13.     public String getName() {  
  14.         return name;  
  15.     }  
  16.     public void setName(String name) {  
  17.         this.name = name;  
  18.     }  
  19.     public String getPassword() {  
  20.         return password;  
  21.     }  
  22.     public void setPassword(String password) {  
  23.         this.password = password;  
  24.     }  

2. Web Service接口

  1. package com.googlecode.garbagecan.cxfstudy.security;  
  2.  
  3. import java.util.List;  
  4.  
  5. import javax.jws.WebMethod;  
  6. import javax.jws.WebResult;  
  7. import javax.jws.WebService;  
  8.  
  9. @WebService 
  10. public interface UserService {  
  11.     @WebMethod 
  12.     @WebResult List<User> list();  
  13.  

3. Web Service實現類

  1. package com.googlecode.garbagecan.cxfstudy.security;  
  2.  
  3. import java.util.ArrayList;  
  4. import java.util.List;  
  5.  
  6. public class UserServiceImpl implements UserService {  
  7.  
  8.     public List<User> list() {  
  9.         List<User> users = new ArrayList<User>();  
  10.         for (int i = 0; i < 10; i++) {  
  11.             User user = new User();  
  12.             user.setId("" + i);  
  13.             user.setName("user_" + i);  
  14.             user.setPassword("password_" + i);  
  15.             users.add(user);  
  16.         }  
  17.         return users;  
  18.     }  
  19.  

4. Server端Handler,其中使用了一個Map來存放用戶信息,真是應用中可以使用數據庫或者其它方式獲取用戶和密碼

  1. package com.googlecode.garbagecan.cxfstudy.security;  
  2.  
  3. import java.io.IOException;  
  4. import java.util.HashMap;  
  5. import java.util.Map;  
  6.  
  7. import javax.security.auth.callback.Callback;  
  8. import javax.security.auth.callback.CallbackHandler;  
  9. import javax.security.auth.callback.UnsupportedCallbackException;  
  10.  
  11. import org.apache.ws.security.WSPasswordCallback;  
  12.  
  13. public class ServerUsernamePasswordHandler implements CallbackHandler {  
  14.  
  15.     // key is username, value is password  
  16.     private Map<String, String> users;  
  17.  
  18.     public ServerUsernamePasswordHandler() {  
  19.         users = new HashMap<String, String>();  
  20.         users.put("admin""admin");  
  21.     }  
  22.  
  23.     public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException {  
  24.         WSPasswordCallback callback = (WSPasswordCallback) callbacks[0];  
  25.         String id = callback.getIdentifier();  
  26.         if (users.containsKey(id)) {  
  27.             if (!callback.getPassword().equals(users.get(id))) {  
  28.                 throw new SecurityException("Incorrect password.");  
  29.             }  
  30.         } else {  
  31.             throw new SecurityException("Invalid user.");  
  32.         }  
  33.     }  
  34. }  

5. Client端Handler,用來設置用戶密碼,在真實應用中可以根據此類和下面的測試類來修改邏輯設置用戶名和密碼。

  1. package com.googlecode.garbagecan.cxfstudy.security;  
  2.  
  3. import java.io.IOException;  
  4.  
  5. import javax.security.auth.callback.Callback;  
  6. import javax.security.auth.callback.CallbackHandler;  
  7. import javax.security.auth.callback.UnsupportedCallbackException;  
  8.  
  9. import org.apache.ws.security.WSPasswordCallback;  
  10.  
  11. public class ClientUsernamePasswordHandler implements CallbackHandler {  
  12.     public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException {  
  13.         WSPasswordCallback callback = (WSPasswordCallback) callbacks[0];  
  14.         int usage = callback.getUsage();  
  15.         System.out.println("identifier: " + callback.getIdentifier());  
  16.         System.out.println("usage: " + callback.getUsage());  
  17.         if (usage == WSPasswordCallback.USERNAME_TOKEN) {  
  18.             callback.setPassword("admin");  
  19.         }  
  20.     }  
  21. }  

6. 單元測試類,注意在Server端添加了WSS4JInInterceptor到Interceptor列表中,在Client添加了WSS4JOutInterceptor到Interceptor列表中。

  1. package com.googlecode.garbagecan.cxfstudy.security;  
  2.  
  3. import java.net.SocketTimeoutException;  
  4. import java.util.HashMap;  
  5. import java.util.List;  
  6. import java.util.Map;  
  7.  
  8. import javax.xml.ws.WebServiceException;  
  9.  
  10. import junit.framework.Assert;  
  11.  
  12. import org.apache.cxf.endpoint.Client;  
  13. import org.apache.cxf.endpoint.Endpoint;  
  14. import org.apache.cxf.frontend.ClientProxy;  
  15. import org.apache.cxf.interceptor.LoggingInInterceptor;  
  16. import org.apache.cxf.interceptor.LoggingOutInterceptor;  
  17. import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;  
  18. import org.apache.cxf.jaxws.JaxWsServerFactoryBean;  
  19. import org.apache.cxf.transport.http.HTTPConduit;  
  20. import org.apache.cxf.transports.http.configuration.HTTPClientPolicy;  
  21. import org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor;  
  22. import org.apache.cxf.ws.security.wss4j.WSS4JOutInterceptor;  
  23. import org.apache.ws.security.WSConstants;  
  24. import org.apache.ws.security.handler.WSHandlerConstants;  
  25. import org.junit.BeforeClass;  
  26. import org.junit.Test;  
  27.  
  28. public class UserServiceTest {  
  29.  
  30.     private static final String address = "http://localhost:9000/ws/security/userService";  
  31.       
  32.     @BeforeClass 
  33.     public static void setUpBeforeClass() throws Exception {  
  34.         JaxWsServerFactoryBean factoryBean = new JaxWsServerFactoryBean();  
  35.         factoryBean.getInInterceptors().add(new LoggingInInterceptor());  
  36.         factoryBean.getOutInterceptors().add(new LoggingOutInterceptor());  
  37.  
  38.         Map<String, Object> props = new HashMap<String, Object>();  
  39.         props.put("action""UsernameToken");  
  40.         props.put("passwordType""PasswordText");  
  41.         props.put("passwordCallbackClass", ServerUsernamePasswordHandler.class.getName());  
  42.         WSS4JInInterceptor wss4JInInterceptor = new WSS4JInInterceptor(props);  
  43.         factoryBean.getInInterceptors().add(wss4JInInterceptor);  
  44.           
  45.         factoryBean.setServiceClass(UserServiceImpl.class);  
  46.         factoryBean.setAddress(address);  
  47.         factoryBean.create();  
  48.     }  
  49.  
  50.     @Test 
  51.     public void testList() {  
  52.         JaxWsProxyFactoryBean factoryBean = new JaxWsProxyFactoryBean();  
  53.         factoryBean.setAddress(address);  
  54.         factoryBean.setServiceClass(UserService.class);  
  55.         Object obj = factoryBean.create();  
  56.           
  57.         Client client = ClientProxy.getClient(obj);  
  58.         Endpoint endpoint = client.getEndpoint();  
  59.           
  60.         Map<String,Object> props = new HashMap<String,Object>();  
  61.         props.put(WSHandlerConstants.ACTION, WSHandlerConstants.USERNAME_TOKEN);  
  62.         props.put(WSHandlerConstants.USER, "admin");  
  63.         props.put(WSHandlerConstants.PASSWORD_TYPE, WSConstants.PW_TEXT);  
  64.         props.put(WSHandlerConstants.PW_CALLBACK_CLASS, ClientUsernamePasswordHandler.class.getName());  
  65.         WSS4JOutInterceptor wss4JOutInterceptor = new WSS4JOutInterceptor(props);  
  66.         endpoint.getOutInterceptors().add(wss4JOutInterceptor);  
  67.           
  68.         HTTPConduit conduit = (HTTPConduit) client.getConduit();  
  69.         HTTPClientPolicy policy = new HTTPClientPolicy();  
  70.         policy.setConnectionTimeout(5 * 1000);  
  71.         policy.setReceiveTimeout(5 * 1000);  
  72.         conduit.setClient(policy);  
  73.           
  74.         UserService service = (UserService) obj;  
  75.         try {  
  76.             List<User> users = service.list();  
  77.             Assert.assertNotNull(users);  
  78.             Assert.assertEquals(10, users.size());  
  79.         } catch(Exception e) {  
  80.             if (e instanceof WebServiceException   
  81.                     && e.getCause() instanceof SocketTimeoutException) {  
  82.                 System.err.println("This is timeout exception.");  
  83.             } else {  
  84.                 e.printStackTrace();  
  85.             }  
  86.         }  
  87.     }  
  88.  

***運行上面的測試類來測試結果,也可以修改測試方法中的密碼,看看錯誤結果,這里就不在寫錯誤密碼的測試用例了,因為我是一懶人。

原文鏈接:http://blog.csdn.net/kongxx/article/details/7534035

【系列文章】

  1. Apache CXF實戰之六:創建安全的Web Service
  2. Apache CXF實戰之五:壓縮Web Service數據
  3. Apache CXF實戰之四:構建RESTful Web Service
  4. Apache CXF實戰之三:傳輸Java對象
  5. Apache CXF實戰之二:集成Sping與Web容器
  6. Apache CXF實戰之一:Hello World Web Service
責任編輯:林師授 來源: kongxx的博客
相關推薦

2012-05-03 11:51:59

ApacheCXFJava

2012-05-03 11:43:32

ApacheCXFRESTful

2012-05-07 14:15:41

ApacheCXFJava

2012-05-03 11:21:58

ApacheCXFJava

2012-05-03 11:30:04

ApacheCXFJava

2010-10-09 10:05:04

2012-05-03 11:35:56

ApacheCXFJava

2014-02-19 15:38:42

2022-06-06 13:54:49

云安全數據中心漏洞

2017-09-25 12:31:51

2010-01-22 11:27:18

2009-08-11 13:27:22

C#創建Web Ser

2012-02-22 22:56:19

開源Apache

2021-08-20 09:00:00

Node.js開發API

2017-11-23 15:09:16

2014-02-28 09:49:11

2023-04-18 08:00:00

2022-01-28 23:37:05

區塊鏈技術

2009-12-08 17:16:37

WCF Web Ser

2009-04-13 11:31:55

IBMdWWebService
點贊
收藏

51CTO技術棧公眾號

91精品视频专区| 亚洲精品久久久久中文字幕欢迎你| 五月天色一区| 国产精品久久久久久无人区| 亚洲色图网站| 精品视频www| 日本特黄a级片| 好看的中文字幕在线播放| 91啦中文在线观看| 国产精品亚洲网站| 久久免费在线观看视频| 久久综合色占| 日韩一区二区在线观看视频 | 欧美视频免费在线| 亚洲精品二区| 天天摸夜夜添狠狠添婷婷| 日韩中文字幕不卡| 久久91超碰青草是什么| 久久成人激情视频| 91麻豆精品国产91久久久久推荐资源 | 久久偷窥视频| 国产aⅴ一区二区三区| 久久精选视频| 国语自产精品视频在线看一大j8| 欧美另类69xxxx| 青青操综合网| 日韩精品一区二区在线观看| 午夜国产一区二区三区| 国产在线精彩视频| 亚洲精品日韩一| 亚洲乱码国产乱码精品天美传媒| 视频污在线观看| 国产乱妇无码大片在线观看| 国产精品大陆在线观看| 久久露脸国语精品国产91| 图片小说视频色综合| 亚洲天堂av在线免费| 国产精品九九视频| 超碰97成人| 日韩美女视频一区二区在线观看| 污片在线免费看| 人人视频精品| 欧美日韩在线视频首页| 成人黄色大片网站| 在线观看wwwxxxx| 中文字幕一区二区三区四区| 色狠狠久久av五月综合| 日本一区高清| 久久亚洲精品国产精品紫薇| 亚洲综合在线中文字幕| 国产精品无码久久久久成人app| 视频一区二区国产| 欧美一级淫片丝袜脚交| 国产超碰人人爽人人做人人爱| 国产精品99免费看| 色综合久久悠悠| 亚洲不卡在线播放| 亚洲先锋影音| 九九九热精品免费视频观看网站| 538精品在线观看| 一级毛片免费高清中文字幕久久网| 日韩在线中文视频| 午夜激情福利电影| 久久精品亚洲欧美日韩精品中文字幕| 色婷婷综合久久久久| 999福利视频| 日韩不卡一区| 久久综合色88| 欧美成人一二三区| 激情欧美一区| 777午夜精品福利在线观看| 1级黄色大片儿| 丝袜美腿亚洲色图| 国产精品久久久久久久久久久久久久 | 香蕉视频免费看| 久久综合色鬼综合色| 欧美久久久久久一卡四| caoporn国产精品免费视频| 国产视频一区二区在线| 亚洲精品视频一区二区三区| 麻豆影院在线| 亚洲一区二区三区中文字幕 | 久久av资源站| 91嫩草在线| 少妇精品视频一区二区| 久久久一区二区| 亚洲一区二区三区免费观看| aaa大片在线观看| 疯狂欧美牲乱大交777| 日韩毛片在线免费看| 欧美在线一级| 精品国产一区二区三区忘忧草 | 天堂成人在线观看| 久久久777精品电影网影网| 一区二区三区偷拍| 黑人玩欧美人三根一起进| 欧美日韩视频免费播放| 青青青在线视频免费观看| 国产精品一区二区三区四区在线观看 | 亚洲AV成人无码一二三区在线| 久久久久久久久久久电影| 午夜啪啪免费视频| 嗯~啊~轻一点视频日本在线观看| 色妞www精品视频| 麻豆网站免费观看| 亚洲最好看的视频| 久久精品国产欧美激情| 国产尤物在线视频| 国内精品免费**视频| 久久99精品国产99久久| 1769免费视频在线观看| 日本精品视频一区二区| av不卡中文字幕| 人人狠狠综合久久亚洲婷| 久久久久久国产精品久久| 黄色一级视频免费看| 国产宾馆实践打屁股91| 日韩精品伦理第一区| a级片免费在线观看| 欧美日产在线观看| 亚洲欧美日本一区| 亚洲欧美亚洲| 国产日韩一区在线| 欧美日韩国产中文字幕在线| 一区二区成人在线视频| 亚洲国产精品三区| 免费观看久久av| 欧美激情视频给我| 国产人妖在线播放| 偷拍精品福利视频导航| 久久精品久久久久久| 亚洲欧美自拍视频| 成人av电影在线| 免费看黄色a级片| 久久国产三级| 亚洲香蕉伊综合在人在线视看| 五月天婷婷丁香| 国产精品一区二区不卡| 亚洲一区二区精品在线观看| 少妇一区视频| 亚洲欧美一区二区三区情侣bbw| 国产一级久久久| 粉嫩高潮美女一区二区三区| 懂色av一区二区三区四区五区| 成人福利片在线| 国产亚洲精品一区二区| 欧美a视频在线观看| 91久色porny| 狠狠97人人婷婷五月| 国产精品一区二区中文字幕| 欧美俄罗斯乱妇| 亚洲av色香蕉一区二区三区| 亚洲蜜臀av乱码久久精品蜜桃| www.com黄色片| 日韩一区电影| 国产精品一区专区欧美日韩| yiren22综合网成人| 欧美最猛性xxxxx直播| 夜夜春很很躁夜夜躁| 日本欧美在线观看| 亚洲 日韩 国产第一区| 九九九精品视频| 日韩中文综合网| 国产免费久久久| 亚洲另类一区二区| 国产精品嫩草69影院| 狠狠88综合久久久久综合网| 国内不卡一区二区三区| 阿v视频在线| 亚洲人成电影网| 真实新婚偷拍xxxxx| 中文字幕在线不卡一区二区三区 | 国产乱码精品一区二区三区av| 日本中文字幕一级片| 麻豆精品99| 国产精品99久久久久久久久久久久| 成人精品一区| 日韩写真欧美这视频| 日本三级免费看| 久久久亚洲精品石原莉奈| 一路向西2在线观看| 一个色综合网| 免费电影一区| 国产成人精品一区二区三区视频| 久久久99久久精品女同性| 亚洲黄色精品视频| 欧美午夜美女看片| 黄色录像一级片| 国产.欧美.日韩| 精品久久久久久中文字幕2017| 99国产**精品****| 国产麻豆乱码精品一区二区三区| 三上悠亚一区二区| 久久99精品国产99久久6尤物| 亚洲欧美色视频| 3751色影院一区二区三区| 男人天堂中文字幕| 国产精品传媒视频| 久久久久麻豆v国产精华液好用吗| 人妖欧美一区二区| 免费人成自慰网站| 色综合五月天| 国内精品视频在线播放| 日韩免费在线电影| 欧美影院在线播放| 四虎av在线| 综合久久五月天| 亚洲欧美丝袜中文综合| 91精品国产综合久久福利| 日本高清不卡码| 一区二区三区蜜桃| 国产7777777| 99这里只有精品| 波多野结衣在线免费观看| 丝袜诱惑亚洲看片| 男女啪啪免费视频网站| 小处雏高清一区二区三区| 欧美一级二级三级九九九| 99久久免费精品国产72精品九九| 国产精品十八以下禁看| 涩涩涩视频在线观看| 久久国产精品久久久久| 国产美女视频一区二区三区| 日韩视频在线永久播放| 92久久精品一区二区| 狠狠色狠狠色综合日日小说| 神马午夜精品91| a美女胸又www黄视频久久| 中文字幕亚洲日本| 蜜芽一区二区三区| 国产aaa一级片| 亚洲乱亚洲高清| 欧美与动交zoz0z| 欧美精品一二| 精品欧美一区二区三区久久久| 亚洲精品乱码日韩| 日本精品视频在线播放| 午夜成年人在线免费视频| 深夜福利国产精品| 麻豆导航在线观看| 亚洲欧美在线一区二区| 丰满人妻一区二区三区免费| 欧美精品久久久久久久多人混战| 中文字幕激情视频| 色婷婷久久久综合中文字幕| 日韩精品一卡二卡| 国产精品久久一卡二卡| 美国美女黄色片| 久久精品免费在线观看| 国产精品第七页| 91麻豆福利精品推荐| 白嫩情侣偷拍呻吟刺激| 国产大陆a不卡| 亚洲网中文字幕| 激情小说亚洲一区| 欧美wwwwwww| 欧美a一区二区| 五月天开心婷婷| 麻豆91精品视频| 天堂一区在线观看| 久久精品国产亚洲一区二区三区| 国产精品免费成人| 日韩在线观看一区二区| 免费看污污网站| 日本不卡在线视频| wwwwxxxx日韩| 蜜臀av一区二区在线观看| 一区二区三区四区毛片| 国产一区二区三区免费| 国内精品国产三级国产aⅴ久| 国产剧情在线观看一区二区| 4438x全国最大成人| 国产成人精品1024| 亚洲热在线视频| 国产999精品久久| 小毛片在线观看| 99久久精品99国产精品| 久久日免费视频| 国产精品国产三级国产有无不卡| 国产精品一区二区亚洲| 亚洲在线视频网站| 日韩 国产 在线| 一本大道久久a久久精二百| 一本色道久久综合熟妇| 911精品产国品一二三产区 | 亚洲精品福利资源站| 日本一区视频| 色综合亚洲精品激情狠狠| 免费观看久久久久| 欧美日韩福利在线观看| 2021中文字幕在线| 热re99久久精品国产66热| 色综合久久久| 国产a一区二区| 深爱激情综合| 欧美图片激情小说| 视频一区视频二区中文| 亚洲精品视频三区| 26uuu久久天堂性欧美| 很污很黄的网站| 偷拍日韩校园综合在线| 在线观看免费中文字幕| 欧美电影精品一区二区| 国产在线观看黄| 久久久久久久久网站| 亚洲成人av观看| 91pron在线| 久久一区二区三区喷水| 欧美图片激情小说| 日韩国产高清影视| 美女日批在线观看| 国产日韩欧美精品综合| 国产亚洲第一页| 欧美日韩在线观看一区二区| 亚洲人在线观看视频| 久久韩国免费视频| 中文字幕高清在线播放| 超碰97在线人人| 日韩一区电影| 蜜臀精品一区二区| 国内不卡的二区三区中文字幕| 女同性恋一区二区三区| 日韩美女久久久| 自拍偷拍福利视频| 亚洲精品成人久久| 最近高清中文在线字幕在线观看| 欧美孕妇孕交黑巨大网站| 亚洲一区二区三区免费| 先锋影音亚洲资源| 三级欧美韩日大片在线看| 无码人妻精品一区二区三| 欧美国产乱子伦 | 俄罗斯黄色录像| 亚洲女与黑人做爰| 亚洲精品国产欧美在线观看| 亚洲韩国欧洲国产日产av | 一区二区三区四区视频精品免费| 高潮毛片又色又爽免费| 精品成人免费观看| 日本伦理一区二区| 成人国产精品久久久久久亚洲| 丝袜美腿综合| 青青草原av在线播放| 成人午夜私人影院| 好吊色视频在线观看| 欧美一区二区三区免费观看视频 | 国产三级精品在线| wwwwww国产| 亚洲人成亚洲人成在线观看| 亚洲精品88| 黑人另类av| 日韩亚洲国产欧美| 插我舔内射18免费视频| 精品久久久国产| 无码国精品一区二区免费蜜桃| 欧美国产亚洲视频| 国产精品毛片久久久| 久久国产精品网| 国产乱理伦片在线观看夜一区| 欧美日韩人妻精品一区二区三区| 4438x亚洲最大成人网| 色欧美激情视频在线| 亚洲淫片在线视频| 伊人久久大香线蕉综合四虎小说| 潘金莲一级淫片aaaaa| 尤物av一区二区| 亚洲黄色a级片| 日本精品在线视频| 国产综合久久久| 五月婷婷六月合| 亚洲精品国产无天堂网2021| 午夜精品久久久久久久91蜜桃| 性色av一区二区三区免费| 欧美理论电影在线精品| 国产又黄又大又粗视频| 日本一区二区三区dvd视频在线 | 8x福利精品第一导航| 国产蜜臀在线| 精品久久久久久乱码天堂| 免费永久网站黄欧美| 亚洲色图日韩精品| 欧美一区二区视频网站| 91精品国产91久久久久久青草| 成人动漫视频在线观看免费| 影音国产精品| www.自拍偷拍| 精品视频一区二区不卡| 国产黄色片在线播放| 91久久大香伊蕉在人线| 极品中文字幕一区| 亚洲ⅴ国产v天堂a无码二区| 制服.丝袜.亚洲.另类.中文| 黄色羞羞视频在线观看| 亚洲一区免费看| 国产精品66部| av首页在线观看| 欧美精品免费看| 婷婷激情久久| 亚洲欧美日韩中文字幕在线观看| 欧美特级www|