webservice權限控制


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM