已閱讀5頁(yè),還剩8頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
本節(jié)摘要:本節(jié)介紹使用handler的方式來(lái)實(shí)現(xiàn)webservice的IP地址的校驗(yàn)。1.引言前一節(jié)介紹了使用users.lst文件來(lái)實(shí)現(xiàn)webservice的用戶名和密碼的校驗(yàn),本節(jié)介紹使用webservice的handler來(lái)實(shí)現(xiàn)webservice的安全校驗(yàn)。這里,不用用戶名和密碼來(lái)實(shí)現(xiàn)安全校驗(yàn),換一種方式,采用IP地址校驗(yàn)的方式。這里通過(guò)一個(gè)配置文件來(lái)控制是否打開(kāi)IP校驗(yàn)開(kāi)關(guān)以及允許哪些IP地址的客戶端可以訪問(wèn)。這里的開(kāi)發(fā)還是基于上一節(jié)HelloService這個(gè)基本的webservice基礎(chǔ)上來(lái)開(kāi)發(fā)。2.項(xiàng)目環(huán)境 system:win7 myeclipse:6.5 tomcat:5.0 JDK:開(kāi)發(fā)環(huán)境1.5,編譯環(huán)境1.4 axis:1.4 項(xiàng)目結(jié)構(gòu)圖如下:3.示例代碼配置文件web.xml-web項(xiàng)目的配置文件,和基本的webservice配置沒(méi)任何區(qū)別web.xml 1 2 7 8 9 AxisServlet10 11 org.apache.axis.transport.http.AxisServlet12 13 14 15 AxisServlet16 /services/*17 18 19 server-config.wsdd-axis的配置文件,這里的配置就是一個(gè)webservice+handler的基本配置server-config.wsdd 1 2 4 5 6 7 8 10 11 13 14 15 17 18 19 20 21 22 23 24 25 26 27 29 31 33 34 35 36 37 /axis/wsdd/38 39 40 41 42 43 44 45 46 47 49 50 52 54 56 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 服務(wù)端文件服務(wù)類(lèi):HelloServiceImpl.javaHelloServiceImpl.java 1 package server.service; 2 3 public class HelloServiceImpl 4 5 public String hello(String s) 6 System.out.println(我是服務(wù)端.); 7 System.out.println(方法的入?yún)椋?s); 8 return hello, + s; 9 10 handler處理類(lèi)和配置文件:IpAuthentionHandler.javaIpAuthentionHandler.java 1 package server.handler; 2 3 import java.io.IOException; 4 import java.io.InputStream; 5 import java.util.Properties; 6 import java.util.regex.Pattern; 7 8 import javax.servlet.http.HttpServletRequest; 9 10 import org.apache.axis.AxisFault;11 import org.apache.axis.MessageContext;12 import org.apache.axis.handlers.BasicHandler;13 import org.apache.axis.transport.http.HTTPConstants;14 import org.apache.axis.utils.Messages;15 16 /利用handler進(jìn)行客戶端IP校驗(yàn)17 public class IpAuthentionHandler extends BasicHandler 18 19 private static final long serialVersionUID = 1L;20 21 private static Properties p = new Properties();22 23 static 24 InputStream in = null;25 try 26 /注意這里的文件的存放位置和文件路徑的書(shū)寫(xiě)方式; path 不以/開(kāi)頭時(shí)默認(rèn)是從此類(lèi)所在的包下取資源27 /這里如果我們把perties放在src根目錄下,然后采用src/perties的形式是沒(méi)法取到此文件的;28 /此時(shí)需要使用 in=IpAuthentionHandler.class.getClassLoader().getResourceAsStream(perties);29 in = IpAuthentionHandler.class.getResourceAsStream(perties); 30 p.load(in);31 catch (IOException e) 32 System.out.println(perties配置文件加載失??!);33 e.printStackTrace();34 finally 35 if (null != in)36 try 37 in.close();38 catch (IOException e) 39 System.out.println(關(guān)閉流操作發(fā)生異常!);40 e.printStackTrace();41 42 43 44 45 public void invoke(MessageContext messageContext) throws AxisFault 46 String status=(String)this.getOption(status);47 System.out.println(IpAuthentionHandlers status is :+status);48 49 String uri = messageContext.getSOAPActionURI();50 String targetService = messageContext.getTargetService();51 52 System.out.println(webservice開(kāi)始IP認(rèn)證:service + uri + /+ targetService);53 String name = HTTPConstants.MC_HTTP_SERVLETREQUEST;54 55 HttpServletRequest request = (HttpServletRequest) messageContext56 .getProperty(name);57 String remoteAddr = request.getRemoteAddr();58 System.out.println(客戶端IP: + remoteAddr);59 60 String switcher = p.getProperty(ip_switcher);61 System.out.println(IP校驗(yàn)開(kāi)關(guān): + switcher);62 63 if (on.equalsIgnoreCase(switcher) 64 System.out.println(服務(wù)端IP校驗(yàn)開(kāi)關(guān)處于【打開(kāi)】狀態(tài),需要校驗(yàn)IP);65 66 String regx = p.getProperty(ip_allow);67 System.out.println(允許調(diào)用服務(wù)的IP地址有: + regx);68 69 if (null != regx & regx.length() 0) 70 71 String regxArray = regx.split(,);72 boolean ip_check = false;73 for (int i = 0; i regxArray.length; i+) 74 Pattern p = Ppile(regxArrayi);75 boolean flag = p.matcher(remoteAddr).find();76 if (flag) 77 ip_check = true;78 break;79 80 81 82 if (ip_check) 83 System.out.println(IP校驗(yàn)通過(guò)!);84 else 85 throw new AxisFault(,Messages.getMessage(wrong ip:+remoteAddr),null,null);86 87 else 88 System.out.println(請(qǐng)指定校驗(yàn)的客戶端IP!);89 throw new AxisFault();90 91 else if (off.equalsIgnoreCase(switcher) 92 System.out.println(服務(wù)端IP校驗(yàn)開(kāi)關(guān)處于【關(guān)閉】狀態(tài),不需要校驗(yàn)IP);93 94 95 96 perties 1 #IP校驗(yàn)配置#2 #IP校驗(yàn)開(kāi)關(guān) 只能填寫(xiě)on或者off,不區(qū)分大小寫(xiě)3 ip_switcher=on4 5 #允許調(diào)用對(duì)應(yīng)的webservice服務(wù)的客戶端IP地址 多個(gè)IP地址之間用逗號(hào)隔開(kāi)6 #當(dāng)ip校驗(yàn)開(kāi)關(guān)打開(kāi)的時(shí)候,必須配置IP地址7 ip_allow=24,23,8 9 #IP校驗(yàn)配置#客戶端文件Test1.javaTest1.java 1 package client; 2 3 import .URL; 4 5 import javax.xml.rpc.ParameterMode; 6 7 import org.apache.axis.client.Call; 8 import org.apache.axis.encoding.XMLType; 9 10 public class Test1 11 12 public static void main(String args) throws Exception 13 webservice_user();14 15 16 public static void webservice_user() throws Exception 17 18 / 1.創(chuàng)建service對(duì)象,通過(guò)axis自帶的類(lèi)創(chuàng)建19 org.apache.axis.client.Service service = new org.apache.axis.client.Service();20 21 / 2.創(chuàng)建url對(duì)象22 String wsdlUrl = http:/localhost:8080/WebService05_Security/services/HelloService?wsdl;/ 請(qǐng)求服務(wù)的URL23 URL url = new URL(wsdlUrl);/ 通過(guò)URL類(lèi)的構(gòu)造方法傳入wsdlUrl地址創(chuàng)建URL對(duì)象24 25 / 2.創(chuàng)建服務(wù)方法的調(diào)用者對(duì)象call,設(shè)置call對(duì)象的屬性26 Call call = (Call) service.createCall();27 call.setTargetEndpointAddress(url);/ 給call對(duì)象設(shè)置請(qǐng)求的URL屬性28 String serviceName = hello;/ webservice的方法名29 call.setOperationName(serviceName);/ 給call對(duì)象設(shè)置調(diào)用方法名屬性30 call.addParameter(s, XMLType.XSD_STRING, ParameterMode.IN);/ 給call對(duì)象設(shè)置方法的參數(shù)名、參數(shù)類(lèi)型、參數(shù)模式31 call.setReturnType(XMLType.SOAP_STRING);/ 設(shè)置調(diào)用方法的返回值類(lèi)型32 / call.setTimeout(new Integer(200);/設(shè)置超時(shí)限制33 34 / 4.通過(guò)invoke方法調(diào)用webservice35 String str = new String(pantp);36 String dept = (String) call.invoke(new Object str );/ 調(diào)用服務(wù)方法37 38 / 5.打印返回結(jié)果39 System.out.println(我是客戶端.);40 System.out.println(dept);41 42 43 驗(yàn)證結(jié)果發(fā)布工程,啟動(dòng)tomcat服務(wù)器:1.看webservice在瀏覽器中是否可以正常顯示在瀏覽器中輸入wsdl地址: http:/localhost:8080/WebService05_Security/services/HelloServ
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版高端鎳氫電池產(chǎn)品定制研發(fā)合同范本4篇
- 二零二五年度農(nóng)場(chǎng)租賃合同農(nóng)業(yè)生態(tài)修復(fù)與保護(hù)協(xié)議4篇
- 2025年度房地產(chǎn)租賃合同房屋質(zhì)量及維修責(zé)任約定4篇
- 2025年互聯(lián)網(wǎng)+內(nèi)資股東股權(quán)投資合同
- 二零二五版智能門(mén)禁系統(tǒng)與電梯聯(lián)動(dòng)工程合同3篇
- 2025年度互聯(lián)網(wǎng)企業(yè)程序員聘用合同模板
- 二零二五版環(huán)保節(jié)能設(shè)備內(nèi)部股東全部股權(quán)轉(zhuǎn)讓與產(chǎn)業(yè)升級(jí)合同3篇
- 2025年高速公路收費(fèi)站車(chē)牌通行費(fèi)用合同
- 二零二五年度一手房銷(xiāo)售顧問(wèn)客戶關(guān)系管理與職責(zé)合同3篇
- 2025年度個(gè)人抵押車(chē)借款保險(xiǎn)配套合同協(xié)議2篇
- 人教版物理八年級(jí)下冊(cè) 專(zhuān)項(xiàng)訓(xùn)練卷 (一)力、運(yùn)動(dòng)和力(含答案)
- 山東省房屋市政工程安全監(jiān)督機(jī)構(gòu)人員業(yè)務(wù)能力考試題庫(kù)-中(多選題)
- 《七律二首 送瘟神》教案- 2023-2024學(xué)年高教版(2023)中職語(yǔ)文職業(yè)模塊
- 2024年中考語(yǔ)文滿分作文6篇(含題目)
- 北師大版 2024-2025學(xué)年四年級(jí)數(shù)學(xué)上冊(cè)典型例題系列第三單元:行程問(wèn)題“拓展型”專(zhuān)項(xiàng)練習(xí)(原卷版+解析)
- 2023年譯林版英語(yǔ)五年級(jí)下冊(cè)Units-1-2單元測(cè)試卷-含答案
- Unit-3-Reading-and-thinking課文詳解課件-高中英語(yǔ)人教版必修第二冊(cè)
- 施工管理中的文檔管理方法與要求
- DL∕T 547-2020 電力系統(tǒng)光纖通信運(yùn)行管理規(guī)程
- 種子輪投資協(xié)議
- 執(zhí)行依據(jù)主文范文(通用4篇)
評(píng)論
0/150
提交評(píng)論