999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

Web Services安全性方案及實現(xiàn)

2008-12-31 00:00:00董義革劉佩賢
電腦知識與技術(shù) 2008年35期

摘要:該文主要探討了Web Services的安全性問題以及解決方案。簡要介紹了Web Services安全技術(shù),提出了實現(xiàn)Web Services安全性的具體實現(xiàn)方案:包括利用用戶名/密碼來設(shè)定訪問權(quán)限;對客戶端IP地址進(jìn)行過濾;以及使用加密數(shù)據(jù)傳輸方式來實現(xiàn)Web Services的安全。

關(guān)鍵詞:Web Services;Tomcat;Servlet;SSL協(xié)議

中圖分類號:TP393文獻(xiàn)標(biāo)識碼:A文章編號:1009-3044(2008)35-2084-04

Web Services Security Solutions and Realize

DONG Yi-ge1, LIU Pei-xian2

(1.Electronic Engineering Department, Science and Technology Engineering School, Beijing Vocational College of Electronic Science, Beijing 100016, China; 2.College of Information Science and Technology, Beijing Chemical Industry University, Beijing 100013, China)

Abstract: This article on the Web Services security issues and solutions. Web Services gave a briefing on security technology, proposes a Web Services security of the concrete realization of the programme: including the use of ID / password to set up access; the client IP address filtering and use of encrypted data transmission means to achieve Web Services Security.

Key words: web services; tomcat; servlet; SSL protocol

1 Web Services安全性方案

Web Services是在開放的Internet上運行的,這種環(huán)境即使受到防火墻的保護(hù),也依然會受到黑客、計算機(jī)病毒的攻擊。而且在商業(yè)環(huán)境中,每個Web服務(wù)的狀態(tài)都可能涉及經(jīng)濟(jì)利益和商業(yè)機(jī)密,如網(wǎng)絡(luò)購物服務(wù)中有電子貨幣信息;信息查詢服務(wù)中有商業(yè)機(jī)密(如價格、貨物種類等)。[1]在Web Services運行過程中,對其狀態(tài)的非法讀取和惡意修改都將對安全性構(gòu)成嚴(yán)重的威脅。安全性的制約被公認(rèn)為是阻礙Web Services模型被廣泛使用的一個重要因素。[2]

安全的Web服務(wù)是Web服務(wù)成功的必要保證。眾所周知,Web服務(wù)是使用XML進(jìn)行數(shù)據(jù)交換的,而XML在默認(rèn)情況下是明文編碼的;同時,大部分Web服務(wù)使用HTTP協(xié)議作為傳輸協(xié)議,同樣,HTTP也是使用明文方式來傳輸數(shù)據(jù)的。這就造成了在不加密的傳輸協(xié)議上傳輸不加密的信息,從而使信息傳輸?shù)谋C苄允艿酵{。

根據(jù)應(yīng)用對安全要求的級別不同,可以采用不同的方式來實現(xiàn)安全性,本文采用了以下幾種方式來實現(xiàn)Web Services的安全性:

1) 利用用戶名/密碼來設(shè)定訪問權(quán)限:J2EE Web應(yīng)用默認(rèn)的訪問控制;

2) 對客戶端IP地址進(jìn)行過濾:使用Servlet過濾器(Filter)進(jìn)行訪問控制;

3) 使用加密數(shù)據(jù)傳輸方式來實現(xiàn)Web Services的安全:使用SSL/HTTPS協(xié)議來傳輸。

使用訪問認(rèn)證機(jī)制來進(jìn)行權(quán)限驗證(包括利用用戶名/密碼來設(shè)定訪問權(quán)限和對客戶端IP地址進(jìn)行過濾)對于安全級別要求不高的應(yīng)用是可行的,它能夠使用Web應(yīng)用訪問認(rèn)證機(jī)制來進(jìn)行權(quán)限驗證,從而保護(hù)對資源的訪問。但需要注意的是,雖然它們進(jìn)行了身份驗證,但信息的傳遞還是以明文的方式進(jìn)行的,不能保證信息在傳輸過程中不被竊取。而SSL是一個安全的傳輸協(xié)議,使用它傳輸Web服務(wù)能保證信息不被第三方竊取。

2Web Services安全方案的實現(xiàn)

2.1 利用用戶名/密碼來設(shè)定訪問權(quán)限

在實現(xiàn)訪問Web Services安全性問題上,我們首先想到的是使用身份驗證來確認(rèn)訪問者的合法性。利用用戶名/密碼來設(shè)定訪問權(quán)限:J2EE Web應(yīng)用默認(rèn)的訪問控制。

不管客戶端通過什么API來調(diào)用Web服務(wù),它總是先構(gòu)造SOAP消息,然后通過HTTP POST方法把消息發(fā)送到Web服務(wù)的URL。而我們知道,不管Axis部署在哪種服務(wù)器上(Tomcat還是Websphere),它總是以Servlet方式來運行的。所以最簡單實現(xiàn)Web服務(wù)安全的方式就是通過在Web應(yīng)用的配置文件(web.xml)來實現(xiàn)訪問控制。

本文部署的Web Services是以Tomcat作為服務(wù)器的,以下闡述如何使用Web應(yīng)用模型中基本認(rèn)證方法來配置Web服務(wù)的安全訪問。

Web應(yīng)用的基本認(rèn)證是建立在J2EE角色和用戶的基礎(chǔ)之上,首先在Tomcat角色配置文件中增加一個角色和一個帳號。

在tomcat-users.xml中增加角色(Tomcat_Home\\conf\omcat-users.xml)

<?xml version='1.0' encoding='utf-8'?>

<tomcat-users>

<role rolename=\"department-manager\"/>

<user username=\"dong \" password=\"6666 \" roles=\"department-manager\"/>

</tomcat-users>

上面配置代碼在Tomcat配置文件中添加了一個department-manager角色,并且在此角色中添加了一個名為dong的用戶。要使tomcat-users.xml中配置的角色和用戶生效,需要配置Tomcat使用UserDatabaseRealm。打開Tomcat_Home\\conf\\server.xml配置文件,在GlobalNamingResources中添加以下描述:

<GlobalNamingResources>

……

<Resource name=\"UserDatabase\" auth=\"Container\"

type=\"org.apache.catalina.UserDatabase\"

description=\"User database that can be updated and saved\">

</Resource>

<ResourceParams name=\"UserDatabase\">

<parameter>

<name>factory</name>

<value>org.apache.catalina.users.MemoryUserDatabaseFactory</value>

</parameter>

<parameter>

<name>pathname</name>

<value>conf/tomcat-users.xml</value>

</parameter>

</ResourceParams>

</GlobalNamingResources>

然后再web應(yīng)用的部署描述符中指定Web服務(wù)資源的訪問控制,如下所示:

配置對Servlet的訪問控制(AXIS_HOME\\WEB-INF\\web.xml)

<security-constraint>

<web-resource-collection>

<web-resource-name>Tax Web service </web-resource-name>

<url-pattern>/periodic </url-pattern>

</web-resource-collection>

<auth-constraint>

<role-name>department-manager</role-name>

</auth-constraint>

</security-constraint>

<login-config>

<auth-method>BASIC</auth-method>

<realm-name>Axis Basic Authentication Area</realm-name>

</login-config>

<security-role>

<role-name>department-manager</role-name>

</security-role>

url-pattern指定了需要通過角色驗證的URL樣式,在這里是\"/periodic\";role-name是能夠訪問制定URL的角色,這里是department-manager。以上配置實現(xiàn)只有角色類型是\"department-manager\"的用戶才能訪問URL樣式為\"/periodic\"的Web服務(wù)。

這樣用戶權(quán)限就設(shè)置完成了,在客戶端調(diào)用服務(wù)時就必須添加用戶名/密碼來實現(xiàn)用戶的身份認(rèn)證。核心代碼如下:

String endpoint =\"http://222.199.225.248:8080/axis/periodic.jws\";//WSDL文件

……

call.getMessageContext().setUsername(\"dong\");//axis中的用戶名。

call.getMessageContext().setPassword(\"6666\");//密碼

……

可以看出,通過使用call.getMessageContext().setUsername(\"peixian\")來設(shè)置調(diào)用的用戶名,通過setPassword來設(shè)置調(diào)用的密碼。通過上面的代碼可以看出,除了為Call對象設(shè)置的用戶名和密碼外,其它的代碼和不使用訪問控制時一樣。如果用戶名、密碼不正確就不能調(diào)用服務(wù)了。

2.2 對客戶端IP地址進(jìn)行過濾

使用Servlet過濾器(Filter)進(jìn)行訪問控制Axis的Web服務(wù)端本質(zhì)上是以Servlet方式在運行,所有我們完全可以在Web應(yīng)用上部署一個Servlet過濾器,通過此過濾器來達(dá)到訪問控制的效果。

Web應(yīng)用中的過濾器截取從客戶端進(jìn)來的請求,然后進(jìn)行一系列處理,最后把請求發(fā)送到目標(biāo)Servlet。過濾器可以說是外部進(jìn)入Web服務(wù)器的第一道關(guān)口,它能決定請求是否繼續(xù)向前轉(zhuǎn)發(fā),也能對請求中的信息進(jìn)行處理。如果過濾器用于對Web服務(wù)進(jìn)行訪問控制,那么它能根據(jù)客戶端信息決定目標(biāo)的服務(wù)是否能調(diào)用成功。

本文在這里開發(fā)的過濾器是根據(jù)客戶端IP地址進(jìn)行過濾,如果客戶端的IP地址在限制范圍中,那么就不能訪問目標(biāo)的Web服務(wù)。過濾器部分代碼如下:

package com.hellking.study.webservice;

import javax.servlet.FilterChain;

……

public class WebServicesFilter implements Filter

{

//沒有權(quán)限訪問的IP地址

static final String[] deniedIPList=new String[]{\"202.4.130.128\"};

public boolean isIPDenied(String ipAddr)

{

……

}

//過濾處理的方法

public void doFilter(final ServletRequest req, final ServletResponse res, FilterChain chain) throws IOException,ServletException

{

HttpServletRequest hreq = (HttpServletRequest)req;

HttpServletResponse hres = (HttpServletResponse)res;

//HttpSession session = hreq.getSession();

String clientIp=req.getRemoteAddr();

System.out.println(\"開始過濾……\");

if(isIPDenied(clientIp))

{

//驗證不成功,不讓用戶登錄。

throw new ServletException(\"無權(quán)限訪問此Web服務(wù)!\");

}

else

{

//驗證成功,繼續(xù)處理

chain.doFilter(req,res);

}}

……

}

WebServicesFilter 過濾器限制了deniedIPList中指定的所有客戶端。編寫了過濾器后,需要在Web應(yīng)用的部署描述符中指定使用此過濾器,并且把過濾器映射到目標(biāo)URL上。也就是說除了編寫Servlet過濾器實現(xiàn)類外,還需要在web.xml中對它進(jìn)行配置,并且把過濾器映射到要過濾的目標(biāo)URL上。以下是過濾器的部署描述符:

<filter>

<filter-name>W(wǎng)ebServicesFilter</filter-name>

<filter-class>com.hellking.study.webservice.WebServicesFilter</filter-class>

</filter>

<filter-mapping>

<filter-name>W(wǎng)ebServicesFilter</filter-name>

<url-pattern>/ *</url-pattern>

</filter-mapping>

url-pattern指定了過濾器要過濾的范圍。\"/*\"正是AxisServlet默認(rèn)的URL。通過上面的配置,只要客戶端調(diào)用Axis Web服務(wù),就會被WebServicesFilter過濾器過濾。如果客戶端IP地址在過濾器的deniedIPList中,那么就不能訪問目標(biāo)服務(wù)。

2.3 使用SSL作為Web服務(wù)的傳輸協(xié)議

目前大多數(shù)Web Services的實現(xiàn)都是以HTTP作為其傳輸層,因此常常結(jié)合HTTP原有的安全機(jī)制。目前,最流行最廣泛使用的安全措施就是使用安全套接字層--SSL。

SSL(Secure Sockets Layer)是由Netscape公司開發(fā)的一套Internet數(shù)據(jù)安全協(xié)議,目前版本是3.0,它已被廣泛地用于Web瀏覽器與服務(wù)器之間的身份認(rèn)證和加密數(shù)據(jù)傳輸。SSL協(xié)議使用不對稱加密技術(shù)實現(xiàn)會話雙方之間信息的安全傳遞。可以實現(xiàn)信息傳遞的保密性、完整性,并且會話雙方能鑒別對方身份。總的來說,SSL 是創(chuàng)建安全通信的一種非常有效的方法。Microsoft XML Web Service 既支持客戶端中的集成 SSL,也支持服務(wù)器中的集成 SSL[3]。以下是實現(xiàn)過程的具體描述:

1) 下載并安裝JSSE

JSSE(Java Security Socket Extension)--Java安全套接字?jǐn)U展,是Sun為了解決在Internet上的安全通訊而推出的解決方案。他提供了一套框架和Java版本的SSL(Secure Sockets Layer)和TLS(Transport Layer Security)協(xié)議的實現(xiàn),也包括了廣泛的功能,如:數(shù)據(jù)加密、服務(wù)器證明、消息完整性,以及可選的客戶證明。使用JSSE,開發(fā)者能夠提供一個基于任何協(xié)議之上(如:Hypertext Transfer Protocol(HTTP),Telnet,or FTP,over TCP/IP)的客戶和服務(wù)器的安全數(shù)據(jù)通道。JSSE是基于安全算法和握手機(jī)制之上的合成體。JSSE能將危險的安全弱點降到最低點,并且減輕了開發(fā)者的負(fù)擔(dān),使得開發(fā)者可以很輕松的整合到程序中。

本實驗使用的是JSSE1.5.0版本,這里用它來產(chǎn)生Tomcat使用的秘鑰對(keystore)。下載后將lib里面的jcert.jar、jnet.jar、jsse.jar 解壓縮到%JAVA_HOME%\\jre\\lib\\ext目錄下完成JSSE的安裝。

2) 修改Tomcat配置文件中的web.xml

Tomcat的conf目錄包含不同的配置文件,在主要配置文件server.xml中默認(rèn)的HTTP連接端口是8080,需要修改為HTTPS的連接端口8443。修改內(nèi)容如下:

將端口為8080的HTTP連接端口注釋掉,加上下面這段代碼:

<!-- Define a SSL Coyote HTTP/1.1 Connector on port 8443 -->

<Connector port=\"8443\"

maxThreads=\"150\" minSpareThreads=\"25\" maxSpareThreads=\"75\"

enableLookups=\"1\" disableUploadTimeout=\"true\"

acceptCount=\"100\" debug=\"0\" scheme=\"https\" secure=\"true\"

clientAuth=\"1\" sslProtocol=\"TLS\" keystoreFile=\"C:\\.keystore\"/>

3) 證書生成

SSL協(xié)議可以分成兩部分:握手和數(shù)據(jù)傳輸。握手建立一個包含發(fā)送方和接收方公鑰密碼值的安全上下文。然后數(shù)據(jù)傳輸使用源自這個安全上下文的共享密鑰[4]。

使用keytool可以幫助用戶創(chuàng)建這些文件(該工具在Java的bin目錄下):

① 在服務(wù)器端生成密鑰對(KeyPair):

%JAVA_HOME%\\bin\\keytool -genkey -alias tomcat -keyalg RSA

② 導(dǎo)出證書:

keytool -export -alias tomcat -file tomcat.cer

③ 導(dǎo)入信任證書tomcat.cer到cacerts這個證書庫:

keytool -import -trustcacerts -alias tomcat -file tomcat.cer -keystore cacerts

④ 查看客戶端cacerts證書項,確認(rèn)含有tomcat這一證書:

keytool -list -keystore cacerts

此時,便完成了對tomcat的SSL配置。為了檢驗配置是否正確,我們啟動tomcat的8443端口,訪問:https://localhost:8443/,出現(xiàn)窗口如圖1所示。

選擇“是”繼續(xù),直至出現(xiàn)Tomcat歡迎頁面。到此為止,SSL配置成功。

4) 部署并調(diào)用Web服務(wù)

該Web Services部署過程與在HTTP上部署過程相同。只是生成的接口文件內(nèi)容不同。因為接口文件是通過WSDL生成,而此時的WSDL已經(jīng)是在加了安全協(xié)議上的描述文件。執(zhí)行下面命令生成接口文件:

java -cp Djavax.net.ssl.trustStore=C:\\.keystore org.apache.axis.wsdl.WSDL2Java https://localhost:8443/axis/periodic.jws?wsdl

注:若出現(xiàn)錯誤提示找不到有效的證書,則用Djavax.net.ssl.trustStore=C:\\.keystore來指定證書所在的位置。

3 結(jié)論

隨著Web Service的應(yīng)用越來越廣。其安全性逐步成為人們最關(guān)心的問題。本文根據(jù)應(yīng)用程序的安全級別的不同,提供了三種安全措施,利用用戶名/密碼來設(shè)定訪問權(quán)限;對客戶端IP地址進(jìn)行過濾;使用SSL作為Web服務(wù)的傳輸協(xié)議。SSL 可提供安全的連接,它允許兩個通過網(wǎng)絡(luò)連接的應(yīng)用程序驗證對方的身份以及對應(yīng)用程序間交換的數(shù)據(jù)進(jìn)行加密,是目前應(yīng)用最為廣泛的一種。通過以上三種安全措施,可有效提高系統(tǒng)的安全性。

參考文獻(xiàn):

[1] 黃九梅,李文婷,趙英.Web Services 客戶端的實現(xiàn)與性能分析[J].中國科技信息,2006(9):148-149.

[2] Thelin J.Identity,security,and XML Web Services[C]//O' Reilly Emerging Technology Conference,2003.

[3] Birbeck M.XML高級編程[M].2版.裴劍鋒,高偉,譯.北京:機(jī)械工業(yè)出版社,2002.

[4] David C.XML-Schema part of primer[EB/OL].(2001-05-02).http://www.w3.org/TR/2001/REC-xmlschema.

主站蜘蛛池模板: 国产91无码福利在线| 女同国产精品一区二区| 波多野结衣中文字幕一区二区| 免费可以看的无遮挡av无码 | 国产成人超碰无码| 亚洲码一区二区三区| 91毛片网| 成年看免费观看视频拍拍| 国产美女一级毛片| 超清人妻系列无码专区| 久久天天躁狠狠躁夜夜2020一| 亚洲国产精品无码久久一线| 亚洲欧洲日韩综合色天使| 国产97视频在线| 91精品啪在线观看国产| 最新加勒比隔壁人妻| 亚洲乱伦视频| 国产成人久视频免费| 亚洲午夜综合网| 亚洲性日韩精品一区二区| 亚洲国产精品久久久久秋霞影院 | 久久亚洲AⅤ无码精品午夜麻豆| 99精品视频在线观看免费播放| 在线观看国产小视频| 欧美色99| 超碰精品无码一区二区| 国产精品自在自线免费观看| 成年A级毛片| 欧美日韩在线第一页| 国产偷国产偷在线高清| 毛片大全免费观看| 日韩高清中文字幕| 亚洲中文字幕日产无码2021| 欧美亚洲一区二区三区在线| 一级毛片免费观看久| 色有码无码视频| 国内老司机精品视频在线播出| 91久久精品国产| 成人无码区免费视频网站蜜臀| 国产在线视频二区| 色屁屁一区二区三区视频国产| 久久综合国产乱子免费| 成年人久久黄色网站| 欧洲亚洲一区| 在线观看的黄网| 欧美人与牲动交a欧美精品| 亚洲成人黄色在线| 亚洲乱码视频| 99久久人妻精品免费二区| 国产精品v欧美| 国外欧美一区另类中文字幕| 91小视频在线观看免费版高清| 天天综合网色| 久久久久青草线综合超碰| 日韩无码黄色| 香蕉久久国产精品免| 亚洲a级在线观看| 久草视频中文| 97超爽成人免费视频在线播放| 国产91透明丝袜美腿在线| 夜夜拍夜夜爽| 亚洲女同一区二区| 在线观看国产黄色| 国产小视频免费观看| 在线播放真实国产乱子伦| 99热最新网址| 国模在线视频一区二区三区| 中文字幕色在线| 伊人五月丁香综合AⅤ| 成人精品视频一区二区在线| 国产日产欧美精品| 国产二级毛片| 国产福利一区在线| 国产丰满大乳无码免费播放 | 免费国产黄线在线观看| 国产精品视屏| 8090成人午夜精品| 日韩欧美中文| 日韩国产黄色网站| 亚洲一区无码在线| 国产成人禁片在线观看| 97精品久久久大香线焦|