知识大全 webservice的安全机制---Filter
Posted 地址
篇首语:识字粗堪供赋役,不须辛苦慕公卿。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 webservice的安全机制---Filter相关的知识,希望对你有一定的参考价值。
webservice的安全机制---Filter 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
引言 前面讲了webservice的安全机制 和 本节继续webservice的安全之旅 本节采用servlet的Filter的来实现对webservice的安全访问 在调用webservice之前 过滤器会拦截匹配的请求 只有满足安全要求的客户端才能访问webservice服务 项目环境 system:win myeclipse: tomcat: JDK:开发环境 编译环境 axis:
示例代码( )配置文件 web xml web xml <?xml version= encoding= UTF ?> <web app version= xmlns= xmlns:xsi= instance xsi:schemaLocation= app_ _ xsd > <! 配置webservice的处理类 > <servlet>
<servlet name>AxisServlet</servlet name> <servlet class> apache axis transport AxisServlet </servlet class> </servlet> <servlet mapping> <servlet name>AxisServlet</servlet name> <url pattern>/services/*</url pattern> </servlet mapping> <! 配置IP地址的过滤器 > <filter> <filter name>WebServiceFilter</filter name> <filter class>server filter WebServiceFilter</filter class> </filter> <filter mapping> <filter name>WebServiceFilter</filter name> <url pattern>/services/*</url pattern> </filter mapping> </web app> server config wsdd server config wsdd <?xml version= encoding= UTF ?> <deployment xmlns= xmlns:java= > <globalConfiguration> <parameter name= sendMultiRefs value= true /> <parameter name= disablePrettyXML value= true /> <parameter name= adminPassword value= admin /> <parameter name= attachments Directory value= D:\\tomcat \\webapps\\WebService\\WEB INF\\attachments /> <parameter name= dotNetSoapEncFix value= true /> <parameter name= enableNamespacePrefixOptimization value= false /> <parameter name= sendXMLDeclaration value= true /> <parameter name= sendXsiTypes value= true /> <parameter name= attachments implementation value= apache axis attachments AttachmentsImpl /> <requestFlow> <handler type= java: apache axis handlers JWSHandler > <parameter name= scope value= session /> </handler> <handler type= java: apache axis handlers JWSHandler > <parameter name= scope value= request /> <parameter name= extension value= jwr /> </handler> </requestFlow> </globalConfiguration> <handler name= LocalResponder type= java: apache axis transport local LocalResponder /> <handler name= URLMapper type= java: apache axis handlers URLMapper /> <handler name= Authenticate type= java: apache axis handlers SimpleAuthenticationHandler /> <service name= AdminService provider= java:MSG > <parameter name= allowedMethods value= AdminService /> <parameter name= enableRemoteAdmin value= false /> <parameter name= className value= apache axis utils Admin /> <namespace>;/namespace> </service> <service name= Version provider= java:RPC > <parameter name= allowedMethods value= getVersion /> <parameter name= className value= apache axis Version /> </service> <transport name= > <requestFlow> <handler type= URLMapper /> <handler type= java: apache axis handlers HTTPAuthHandler /> </requestFlow> <parameter name= qs:list value= apache axis transport QSListHandler /> <parameter name= qs:wsdl value= apache axis transport QSWSDLHandler /> <parameter name= qs list value= apache axis transport QSListHandler /> <parameter name= thod value= apache axis transport QSMethodHandler /> <parameter name= qs:method value= apache axis transport QSMethodHandler /> <parameter name= qs wsdl value= apache axis transport QSWSDLHandler /> </transport> <transport name= local > <responseFlow> <handler type= LocalResponder /> </responseFlow> </transport> <! 配置自己的服务 > <service name= HelloService provider= java:RPC > <parameter name= allowedMethods value= * /> <parameter name= className value= server service HelloServiceImpl /> </service> </deployment> ( )服务端代码 HelloServiceImpl java webservice服务端 HelloServiceImpl java package server service; public class HelloServiceImpl public String hello(String s) return hello + s; WebServiceFilter java Filter过滤器 WebServiceFilter java package server filter; import java io IOException; import javax servlet Filter; import javax servlet FilterChain; import javax servlet FilterConfig; import javax servlet ServletException; import javax servlet ServletRequest; import javax servlet ServletResponse; import javax servlet HttpServletRequest; public class WebServiceFilter implements Filter //不允许访问webservice服务的IP地址 static final String[] deniedIPList=new String[] ; public boolean isIPDenied(String ipAddr) if(deniedIPList length== ) return false; for(int i= ;i<deniedIPList length;i++) if(deniedIPList[i] equals(ipAddr)) return true; return false; public void destroy() public void doFilter(ServletRequest req ServletResponse res FilterChain chain) throws IOException ServletException HttpServletRequest request=(HttpServletRequest) req; String clientIP=request getRemoteHost() System out println( 客户端IP: +clientIP) System out println( 开始过滤… ) if(isIPDenied(clientIP)) throw new ServletException( 你没有权限调用此webservice! ) else chain doFilter(req res) public void init(FilterConfig arg ) throws ServletException ( )客户端代码 Test java 客户端动态调用的代码 Test java package client; import URL; import javax xml rpc ParameterMode; import apache axis client Call; import apache axis encoding XMLType; public class Test public static void main(String args[]) throws Exception webservice_user() public static void webservice_user() throws Exception // 创建service对象 通过axis自带的类创建 apache axis client Service service = new apache axis client Service() // 创建url对象 String wsdlUrl = //localhost: /WebService _Security/services/HelloService?wsdl ;// 请求服务的URL URL url = new URL(wsdlUrl) // 通过URL类的构造方法传入wsdlUrl地址创建URL对象 // 创建服务方法的调用者对象call 设置call对象的属性 Call call = (Call) service createCall() call setTargetEndpointAddress(url) // 给call对象设置请求的URL属性 String serviceName = hello ;// webservice的方法名 call setOperationName(serviceName) // 给call对象设置调用方法名属性 call addParameter( s XMLType XSD_STRING ParameterMode IN) // 给call对象设置方法的参数名 参数类型 参数模式 call setReturnType(XMLType SOAP_STRING) // 设置调用方法的返回值类型 // call setTimeout(new Integer( )) //设置超时限制 // //此处的用户名和密码对应WEB INF目录下users lst文件中的用户名和密码 // call getMessageContext() setUsername( pantp ) // call getMessageContext() setPassword( ) // // 通过invoke方法调用webservice String str=new String( pantp ) System out println( 开始调用webservice服务…… ) String dept = (String) call invoke(new Object[] str ) // 调用服务方法 System out println( 结束调用webservice服务…… ) // 打印返回结果 System out println( 返回结果如下 +dept) 安全测试( )正常测试(本机IP地址不在受限IP之内) 浏览器中输入wsdl地址测试
运行Test客户端测试
客户端日志
服务端日志
( )受限测试(本机IP地址在受限IP之内) 修改WebServiceFilter类中deniedIPList数组所在的一行代码 加入IP地址 然后重新发布项目 修改后数组IP地址如下 受限IP地址列表 static final String[] deniedIPList=new String[] ; 浏览器中输入wsdl地址测试
运行Test客户端测试
客户端日志
服务端日志
总结 至此 webservice的安全相关的文章就已经介绍完了 以上都是webservice安全方面比较简单的实现措施 更多的欢迎各位的探讨 cha138/Article/program/Java/hx/201311/25712
相关参考
ASP.NETMVC:Filter和Action的执行介绍 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一
知识大全 Web App struts框架里实现Filter
WebAppstruts框架里实现Filter 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! w
知识大全 戏说java web开发中的listener和filter
今天在公司看到有同事在写filter晚上一个人在家无聊就想聊聊这个东西 jsp开发中的监听器和过滤器这两个东西要说起来很大很繁今天我想用一个现实的例子来说明这两个东东的作用 案例描述 假设你
知识大全 Filter Warning! 请各位大虾帮帮忙呀,教教我怎么解决
我的电脑看不了视讯了,开启有些网站还显示URLFilterWarning!请各位大虾帮帮忙呀,教教我怎么解决! 以下文字资料是由(全榜网网www.cha138.com)
SQL实战新手入门:基本安全机制 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 基本安全机制
(1)加强制度建设。建立安全决策和咨询机制。要建立由国务院主要领导和有关职能部门参加的国家环境安全委员会,作为国家环境安全的最高决策咨询机构《建立环境安全评估机制。建立由相关专家组成的战略评估小组,对
(1)加强制度建设。建立安全决策和咨询机制。要建立由国务院主要领导和有关职能部门参加的国家环境安全委员会,作为国家环境安全的最高决策咨询机构《建立环境安全评估机制。建立由相关专家组成的战略评估小组,对
微软NET战略的一个比较重要的部分就是webservice利用webservice我们可以创建真正有效的分布式应用程序 下面我们对webservice做一些说明 假设A是客户端B是webser
webservice和软件接口有什么区别和联系吗?webservice(SOAP)与HTTP接口的区别什么是webservice?soap请求是HTTPPOST的一个专用版本,遵循一种特殊的xml消息
是webservice就概念上来说可能比较复杂不过我们可以有个宏观的了解webservice就是个对外的接口里面有函数可供外部客户调用(注意里面同样有客户不可调用的函数)假若我们是服务端我们写好了