WebServic开发之Axis权限控制
??? 开发好WebService并向外暴露服务后,由于WebService访问协议都是公开的,客户端只要知道服务的wsdl,就可以访问WebService中的方法。为防止非法的访问,可以要求客户端访问WebService时提供用户名和口令,只有在服务端通过身份认证后才可继续访问方法,否则请求被拒绝。 下面看一下Axis中如何使用用户名、口令来控制对WebService 的访问。 在myservices/WEB-INF下创建一个名为users.lst的文本文件,一行表示一对用户名、口令,之间用空格分隔,内容如下:
? 实现一个WebService,它有一个foo()方法,该方法打印出通过身份认证的用户的用户名,代码如下: SecurityService.java
? 为了让 Axis知晓要对该服务的访问验证用户名和口令,需要在wsdd文件中增加一个Axis自带的处理器SimpleAuthenticationHandler,该处理器会从MessageContext中取出用户名和口令,并与users.lst中的用户名和口令进行比对,如果匹配,则通过验证,继续后面的处理,否则抛出(401)Unauthorized异常。 deploy.wsdd
? ? ??? 客户端在访问WebService时,需要在 Call对象中设置在users.lst文件中已有的用户名和对应的口令。客户端代码如下: ?
??????? Call对象用setUserName()和setPassword()来设置用户名和口令。 ??????? Axis自带的身份认证功能比较简单,如果其安全性不能满足应用系统的要求,可以自定义一个处理器替代SimpleAuthenticationHandler,在自定义处理器中采用其他的安全框架(如Acegi http://www.acegisecurity.org/)来保护你的WebService。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |