webservice权限控制

≡放荡痞女 提交于 2020-01-02 01:12:59

webservice权限控制设计及说明

已有2.0版本,自动实现接口,取消了eclipse生成实现类的过程,详情见git上2.0文档

代码地址(1.0)

https://coding.net/u/mich/p/easytry/git/tree/master/WebService

代码地址(2.0)

https://coding.net/u/mich/p/easytry/git/tree/master/WebServiceV2.0

模块划分

模块主要划分为三个模块,客户端,服务端,output模块
服务端:提供对外服务

 

author包下为权限相关处理类,此处需要和自己系统做对应处理
webservice包下为对外接口,实现类以及相应pojo


output模块:通过服务端的wsld利用eclipse插件自动生成接口以及实现类,同时包含授权相关工具代理

Proxy包下主要提供给客户端权限控制的代理
Webservice包下为eclipse自动根据wsdl生成的实现方法以及代理等类

客户端:调用方法

java下主要调用服务端的相关接口做的简单测试代码
cxf.properties为主要的webservice相关配置文件
同时lib引用了上例output所导出的jar包

核心处理流程

开发流程

1. 服务端开发

a) 编写接口

注意接口上方要添加@WebService注解

b) 编写实现类

 

实现类同样要添加@WebService注解同时endpointInterface为对应接口类全名,targetNameSpace为实现类包名倒置,@Service添加后,便于webservice的发布

c) 编写配置文件cxf-servlet.xml

 

在WebserviceAuthorizeListener中已给所有webservice添加了AuthorInterceptor拦截器,控制权限,如果上例webservice的实现类未添加@Service注解此处需要额外配置

d) 访问http://localhost:8080/webserviceStudy/services/testService?wsdl
如果显示信息,则表示成功

2. output模块开发

a) 开启服务端服务,保证刚刚发布的wsd可以访问
b) 点击项目右键,新建一个web Service Client

 

c) 点击next,此时如果wsdl不能访问,则会报错,点击finish即可生成对应代码

d) 生成成功后会生成五个文件,I***Service, I***ServiceProxy,***ImplService,***ImplServiceLactor,***ImplServiceSoapBindingStub,客户端主要调用Proxy

e) 项目导出jar包

3. 客户端开发
a) 将output导出的jar包导入项目中
b) 通过authorProxy调用getService,内部传入相关接口Proxy的get***Service方法

c) 此处可能抛出异常,如缺失头信息:此错误可能由于authorProxy未生效导致,权限不足:可能该用户并没有调用该服务的权限
其余cxf相关配置说明
1. 服务端web.xml

2. 客户端spring-mvc.xml

通过spring注入AuthorizeProxy的Bean不同客户端的name和token在cxf.properties中设置

测试结果

测试主要通过客户端的TestController配置,权限主要配置两个tom:tom,admin:adminPwd,服务端权限主要在AuthorizeService中配置,此处仅为测试使用,实际需以项目做对应处理

以下结果为tom:tom的权限测试
http://localhost:8080/webserviceClientStudy/hello?name=sss

http://localhost:8080/webserviceClientStudy/create?name=tom&id=2

http://localhost:8080/webserviceClientStudy/delete

代码地址(1.0)

https://coding.net/u/mich/p/easytry/git/tree/master/WebService

代码地址(2.0)

https://coding.net/u/mich/p/easytry/git/tree/master/WebServiceV2.0

模块划分

模块主要划分为三个模块,客户端,服务端,output模块
服务端:提供对外服务

 

author包下为权限相关处理类,此处需要和自己系统做对应处理
webservice包下为对外接口,实现类以及相应pojo


output模块:通过服务端的wsld利用eclipse插件自动生成接口以及实现类,同时包含授权相关工具代理

Proxy包下主要提供给客户端权限控制的代理
Webservice包下为eclipse自动根据wsdl生成的实现方法以及代理等类

客户端:调用方法

java下主要调用服务端的相关接口做的简单测试代码
cxf.properties为主要的webservice相关配置文件
同时lib引用了上例output所导出的jar包

核心处理流程

开发流程

1. 服务端开发

a) 编写接口

注意接口上方要添加@WebService注解

b) 编写实现类

 

实现类同样要添加@WebService注解同时endpointInterface为对应接口类全名,targetNameSpace为实现类包名倒置,@Service添加后,便于webservice的发布

c) 编写配置文件cxf-servlet.xml

 

在WebserviceAuthorizeListener中已给所有webservice添加了AuthorInterceptor拦截器,控制权限,如果上例webservice的实现类未添加@Service注解此处需要额外配置

d) 访问http://localhost:8080/webserviceStudy/services/testService?wsdl
如果显示信息,则表示成功

2. output模块开发

a) 开启服务端服务,保证刚刚发布的wsd可以访问
b) 点击项目右键,新建一个web Service Client

 

c) 点击next,此时如果wsdl不能访问,则会报错,点击finish即可生成对应代码

d) 生成成功后会生成五个文件,I***Service, I***ServiceProxy,***ImplService,***ImplServiceLactor,***ImplServiceSoapBindingStub,客户端主要调用Proxy

e) 项目导出jar包

3. 客户端开发
a) 将output导出的jar包导入项目中
b) 通过authorProxy调用getService,内部传入相关接口Proxy的get***Service方法

c) 此处可能抛出异常,如缺失头信息:此错误可能由于authorProxy未生效导致,权限不足:可能该用户并没有调用该服务的权限
其余cxf相关配置说明
1. 服务端web.xml

2. 客户端spring-mvc.xml

通过spring注入AuthorizeProxy的Bean不同客户端的name和token在cxf.properties中设置

测试结果

测试主要通过客户端的TestController配置,权限主要配置两个tom:tom,admin:adminPwd,服务端权限主要在AuthorizeService中配置,此处仅为测试使用,实际需以项目做对应处理

以下结果为tom:tom的权限测试
http://localhost:8080/webserviceClientStudy/hello?name=sss

http://localhost:8080/webserviceClientStudy/create?name=tom&id=2

http://localhost:8080/webserviceClientStudy/delete

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!