本發(fā)明涉及云存儲技術領域,尤指一種基于云服務的文件訪問系統(tǒng)和方法。
背景技術:
云存儲是一種新興的網(wǎng)絡存儲技術,通過集群應用、網(wǎng)絡技術或分布式文件系統(tǒng)等功能,將網(wǎng)絡中各種不同類型的大量存儲設備通過應用軟件集合起來協(xié)同工作,共同對外提供數(shù)據(jù)存儲和業(yè)務訪問功能。用戶可以在任何時間、任何地方,通過任何可連網(wǎng)的裝置連接到云上,方便地存取數(shù)據(jù)。
用戶訪問云上存儲的文件時,必須由云存儲服務端控制授權,但是,用戶與云存儲服務端每建立一次連接,云存儲服務端只授權一個文件,對于用戶來說,這樣相對不夠靈活。另外,如果由云存儲服務端向用戶直接提供授權鏈接,該授權鏈接會暴露文件在云存儲空間上的存儲路徑,從而容易被有惡意的人解析使用,使得用戶訪問云存儲空間的文件變得不安全。
技術實現(xiàn)要素:
為了解決上述技術問題,本發(fā)明提供了一種基于云服務的文件訪問系統(tǒng)和方法,能夠簡單地確保客戶端訪問云存儲空間的文件的安全性。
為了達到本發(fā)明目的,本發(fā)明實施例的技術方案是這樣實現(xiàn)的:
本發(fā)明實施例提供了一種基于云服務的文件訪問系統(tǒng),包括用于發(fā)起第一訪問請求和第二訪問請求的客戶端以及用于存儲文件的云存儲服務器,還包括:第二反向代理服務器和第二接口服務器;其中,
第二反向代理服務器,用于將來自客戶端的第一訪問請求轉發(fā)給第二接口服務器;在接收到來自客戶端的攜帶加密鏈接地址的第二訪問請求時,查找是否存儲有與加密鏈接地址對應的云存儲地址,如果有,轉發(fā)第二訪問請求至云存儲地址所在的云存儲服務器;
第二接口服務器,用于基于接收的第一訪問請求生成加密鏈接地址,并通過第二反向代理服務器轉發(fā)給客戶端。
進一步地,所述第二接口服務器基于接收的第一訪問請求生成加密鏈接地址,具體包括:
提取第一訪問請求中的用戶標識和目標文件標識,查找目標文件標識對應的云存儲地址,根據(jù)用戶標識生成用戶令牌,使用用戶令牌作為加密密鑰,對云存儲地址進行加密,生成加密鏈接地址。
可選地,所述第二接口服務器為tomcat集群服務器。
可選地,所述第二反向代理服務器為Nginx服務器。
本發(fā)明實施例還提供了一種基于云服務的文件訪問系統(tǒng),包括用于發(fā)起第一訪問請求和第二訪問請求的客戶端,還包括:第一接口服務器,其中,
第一接口服務器,用于基于接收的第一訪問請求生成加密鏈接地址,并返回給客戶端;在接收到來自客戶端的攜帶加密鏈接地址的第二訪問請求時,查找是否存儲有與加密鏈接地址對應的云存儲地址,如果有,轉發(fā)第二訪問請求至對應的云存儲地址。
進一步地,還包括第一反向代理服務器,用于轉發(fā)所述客戶端和所述第一接口服務器之間的數(shù)據(jù)。
本發(fā)明實施例還提供了一種基于云服務的文件訪問方法,包括如下步驟:
客戶端發(fā)起第一訪問請求;
第二反向代理服務器將第一訪問請求轉發(fā)至第二接口服務器;
第二接口服務器基于接收的第一訪問請求生成加密鏈接地址,并通過第二反向代理服務器返回給客戶端;
客戶端使用加密鏈接地址,發(fā)起第二訪問請求;
第二反向代理服務器查找是否存儲有與加密鏈接地址相對應的云存儲地址,如果有對應的云存儲地址,轉發(fā)第二訪問請求至對應的云存儲地址。
進一步地,第二接口服務器基于接收的第一訪問請求生成加密鏈接地址,具體包括:
提取第一訪問請求中的用戶標識和目標文件標識,查找目標文件標識對應的云存儲地址,根據(jù)用戶標識生成用戶令牌,使用用戶令牌作為加密密鑰,對云存儲地址進行加密,生成加密鏈接地址。
本發(fā)明實施例還提供了一種基于云服務的文件訪問方法,包括如下步驟:
客戶端發(fā)起第一訪問請求;
第一接口服務器接收第一訪問請求,生成加密鏈接地址,并返回給客戶端;
客戶端使用加密鏈接地址,發(fā)起第二訪問請求;
第一接口服務器查找是否存儲有與加密鏈接地址相對應的云存儲地址,如果有對應的云存儲地址,轉發(fā)第二訪問請求至對應的云存儲地址。
進一步地,所述客戶端和第一接口服務器之間,通過第一反向代理服務器轉發(fā)數(shù)據(jù)。
本發(fā)明提供的基于云服務的文件訪問系統(tǒng)和方法,提供客戶端的文件訪問鏈接均為加密鏈接,不會暴露文件的存儲路徑,從而防止了被有惡意的人解析使用;通過設置接口服務器上的文件訪問接口,客戶端與接口服務器每建立一次連接,可以同時訪問云服務器上的多個文件。通過本發(fā)明提供的技術方案,簡單地確保了客戶端訪問云存儲空間的文件的安全性。
附圖說明
此處所說明的附圖用來提供對本發(fā)明的進一步理解,構成本申請的一部分,本發(fā)明的示意性實施例及其說明用于解釋本發(fā)明,并不構成對本發(fā)明的不當限定。在附圖中:
圖1為本發(fā)明基于云服務的文件訪問系統(tǒng)的第一實施例的一種結構示意圖。
圖2為本發(fā)明基于云服務的文件訪問系統(tǒng)的第一實施例的另一種結構示意圖。
圖3為本發(fā)明基于云服務的文件訪問系統(tǒng)的第二實施例的結構示意圖。
圖4為本發(fā)明基于云服務的文件訪問系統(tǒng)的第二實施例的實際部署結構示意圖。
圖5為本發(fā)明基于云服務的文件訪問方法的第一實施例的流程示意圖。
圖6為本發(fā)明基于云服務的文件訪問方法的第二實施例的流程示意圖。
具體實施方式
下面將結合附圖及實施例對本發(fā)明的技術方案進行更詳細的說明。應當理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。需要說明的是,在不沖突的情況下,本發(fā)明中的實施例及實施例中的特征可以相互任意結合。
如圖1所示,根據(jù)本發(fā)明的第一種基于云服務的文件訪問系統(tǒng),至少包括發(fā)起第一訪問請求和第二訪問請求的客戶端和第一接口服務器;其中,
第一接口服務器,用于基于接收的第一訪問請求生成加密鏈接地址,并返回給客戶端;在接收到來自客戶端的攜帶加密鏈接地址的第二訪問請求時,查找是否存儲有加密鏈接地址對應的云存儲地址,如果有,轉發(fā)第二訪問請求至對應的云存儲地址。
進一步地,第一訪問請求中包括用戶要訪問的目標文件信息,例如目標文件序列號(ID),第一接口服務器根據(jù)目標文件信息查找對應的云存儲地址,并生成加密鏈接地址。
可選地,第一訪問請求和第二訪問請求中還攜帶鑒權信息,以供第一接口服務器基于接收的鑒權信息進行鑒權操作。其中,第一訪問請求中的鑒權信息包括用戶的用戶標識(ID)和密碼,第一接口服務器通過該用戶標識和密碼驗證用戶是否合法,是則鑒權通過,在鑒權通過時返回配置有一定的生存時間的用戶令牌(token)至客戶端;客戶端發(fā)起的攜帶加密鏈接地址的第二訪問請求中攜帶該用戶令牌,以供第一接口服務器在且僅在用戶令牌的生存時間內(nèi),響應客戶端的第二訪問請求。
可選地,第一接口服務器基于接收的第一訪問請求生成加密鏈接地址,具體包括:提取第一訪問請求中的用戶標識和目標文件標識,查找與目標文件標識對應的云存儲地址,根據(jù)用戶標識生成用戶令牌,使用用戶令牌作為加密密鑰,通過安全哈希算法(SHA1)或其它加密算法對云存儲地址進行加密,生成加密鏈接地址。此處的加密算法應與服務提供者在第一接口服務器中或與第一接口服務器相連的第二數(shù)據(jù)庫中預先存儲的加密鏈接地址所使用的加密算法相同。例如:生成的加密鏈接地址,結構形如http://cloud-download.server.nubia.cn?path=加密地址。本發(fā)明的加密鏈接地址避免了文件存儲結構路徑直接暴露給客戶,從而防止了被有惡意的人解析使用。
進一步地,第一接口服務器,根據(jù)來自客戶端的訪問請求中的關鍵字判斷是第一訪問請求還是第二訪問請求。
本實施例中,服務提供者部署云服務時,預先把目標文件存儲至對應的云存儲地址,并把用戶ID、目標文件ID、云存儲地址存儲在第一接口服務器或與第一接口服務器相連的第一數(shù)據(jù)庫中,第一接口服務器接收第一訪問請求時,在第一接口服務器或第一數(shù)據(jù)庫中查找用戶ID和目標文件ID對應的云存儲地址。另外預先把用戶token、加密鏈接地址、云存儲地址存儲在第一接口服務器中或與第一接口服務器相連的第二數(shù)據(jù)庫中,第一接口服務器接收第二訪問請求時,在第一接口服務器或與第一接口服務器相連的第二數(shù)據(jù)庫中驗證是否有與用戶token和加密鏈接地址對應的云存儲地址。可選地,第二數(shù)據(jù)庫為Mysql數(shù)據(jù)庫;第二數(shù)據(jù)庫的結構如表1所示。
表1
可選地,第一接口服務器可以允許客戶端同時對多個文件進行訪問。本發(fā)明的文件訪問請求為文件下載請求,由于用戶token配置有一定的生存時間,因此,即便攻擊者截獲第二訪問請求中的用戶token和加密鏈接地址,也只能在用戶token的生存時間內(nèi)下載所截獲的加密鏈接地址對應的單個文件,通過在第一接口服務器端設置防火墻,來防御攻擊者利用截獲的第二訪問請求發(fā)起分布式拒絕服務(Distributed Denial of Service,DDoS)攻擊。
可選地,如圖2所示,第一接口服務器可以為一集群系統(tǒng),例如,集群系統(tǒng)可以為tomcat集群服務器。在tomcat集群服務器中,每臺tomcat服務器都是運行其自己進程的獨立服務器,這些進程可以彼此通信,對客戶端來說,多臺tomcat服務器就像是形成了一個單一系統(tǒng),協(xié)同起來向用戶提供應用程序、系統(tǒng)資源和數(shù)據(jù),從而解決網(wǎng)站訪問量過大導致web服務器崩潰的問題。進一步地,如圖2所示,在客戶端和第一接口服務器集群之間設置第一反向代理服務器,用于轉發(fā)客戶端和第一接口服務器集群之間的數(shù)據(jù)。通過設置第一反向代理服務器,客戶端不需要記住每個第一接口服務器的地址,而是直接通過第一反向代理服務器的地址發(fā)起文件訪問請求,由第一反向代理服務器將客戶端的文件訪問請求轉發(fā)至第一接口服務器集群中對應的第一接口服務器。
可選地,第一反向代理服務器為Nginx服務器。Nginx是一個高性能Web和反向代理服務器,通過Nginx服務器,可以對第一接口服務器集群進行負載均衡或動靜分離(Nginx服務器作為靜態(tài)服務器,主要處理圖片以及其它所有的靜態(tài)文件請求;第一接口服務器作為動態(tài)服務器,主要處理jsp、do等動態(tài)頁面的請求)。
如圖3所示,根據(jù)本發(fā)明的第二種基于云服務的文件訪問系統(tǒng),包括發(fā)起第一訪問請求和第二訪問請求的客戶端、第二反向代理服務器、第二接口服務器和用于存儲文件的云存儲服務器;
其中,第二反向代理服務器,用于將來自客戶端的第一訪問請求轉發(fā)給第二接口服務器;并在接收到來自客戶端的攜帶加密鏈接地址的第二訪問請求時,查找是否存儲有與加密鏈接地址對應的云存儲地址,如果有,轉發(fā)第二訪問請求至云存儲地址所在的云存儲服務器;
第二接口服務器用于基于接收的第一訪問請求生成加密鏈接地址,并通過第二反向代理服務器返回給客戶端。
進一步地,第二反向代理服務器,根據(jù)來自客戶端的訪問請求中的關鍵字判斷是第一訪問請求還是第二訪問請求。
進一步地,第一訪問請求中包括用戶要訪問的目標文件信息,例如目標文件序列號(ID),第二接口服務器根據(jù)目標文件信息查找對應的云存儲地址,并生成加密鏈接地址;
可選地,第一訪問請求和第二訪問請求中還攜帶鑒權信息,以供第二接口服務器和第二反向代理服務器基于接收的鑒權信息進行鑒權操作。其中,第一訪問請求中的鑒權信息包括用戶的用戶標識(ID)和密碼,第二接口服務器通過該用戶標識和密碼驗證用戶是否合法,是則鑒權通過,在鑒權通過時返回配置有一定的生存時間的用戶令牌(token)至客戶端;客戶端發(fā)起的攜帶加密鏈接地址的第二訪問請求中攜帶該用戶令牌,以供第二反向代理服務器在且僅在用戶令牌的生存時間內(nèi),響應客戶端的第二訪問請求。可選地,第二接口服務器基于接收的第一訪問請求生成加密鏈接地址,具體包括:提取第一訪問請求中的用戶標識和目標文件標識,查找與目標文件標識對應的云存儲地址,根據(jù)用戶標識生成用戶令牌,使用用戶令牌作為加密密鑰,通過安全哈希算法(SHA1)或其它加密算法對云存儲地址進行加密,生成加密鏈接地址。此處的加密算法應與服務提供者在第二反向代理服務器中或與第二反向代理服務器相連的第四數(shù)據(jù)庫中預先存儲的加密鏈接地址所使用的加密算法相同。例如:生成的加密鏈接地址,結構形如http://cloud-download.server.nubia.cn?path=加密地址。本發(fā)明的加密鏈接地址避免了文件存儲結構路徑直接暴露給客戶,從而防止了被有惡意的人解析使用。
本實施例中,服務提供者部署云服務時,預先把目標文件存儲至對應的云存儲地址,并把用戶ID、目標文件ID、云存儲地址存儲在第二接口服務器或與第二接口服務器相連的第三數(shù)據(jù)庫中,第二接口服務器接收第一訪問請求時,在第二接口服務器或第三數(shù)據(jù)庫中查找目標文件ID對應的云存儲地址。另外預先把用戶token、加密鏈接地址、云存儲地址存儲在第二反向代理服務器中或與第二反向代理服務器相連的第四數(shù)據(jù)庫中,第二反向代理服務器接收第二訪問請求時,在第二反向代理服務器或第四數(shù)據(jù)庫中驗證是否有與用戶token和加密鏈接地址對應的云存儲地址。可選地,第四數(shù)據(jù)庫為Mysql數(shù)據(jù)庫;第四數(shù)據(jù)庫的結構如上述表1所示。
可選地,第二接口服務器為tomcat集群服務器。
可選地,第二反向代理服務器為Nginx服務器。Nginx服務器,使用proxy_pass方式,轉發(fā)第二訪問請求至云存儲地址所在的云存儲服務器。本實施例通過第二反向代理服務器,直接將客戶端的第二訪問請求轉發(fā)至云存儲服務器,并將來自云存儲服務器的第二訪問響應直接轉發(fā)至客戶端,從而省略了一次通過第二接口服務器轉發(fā)的步驟,節(jié)約了帶寬。
可選地,Nginx服務器驗證是否有與客戶端的第二訪問請求對應的云存儲地址時,使用TCP長連接方式與第四數(shù)據(jù)庫建立連接,以減小連接第四數(shù)據(jù)庫時的開銷。
可選地,第二接口服務器可以允許客戶端同時對多個文件進行訪問。本發(fā)明的文件訪問請求為文件下載請求,由于用戶token配置有一定的生存時間,因此,即便攻擊者截獲第二訪問請求中的用戶token和加密鏈接地址,也只能在用戶token的生存時間內(nèi)下載所截獲的加密鏈接地址對應的單個文件,通過在第二反向代理服務器端設置防火墻來防御攻擊者利用截獲的第二訪問請求發(fā)起分布式拒絕服務攻擊。
下面通過圖4所示的實際部署結構,對本發(fā)明的第二種基于云服務的文件訪問系統(tǒng)做進一步地舉例說明。
如圖4所示,服務提供者部署云服務時,預先把目標文件存儲至對應的云存儲地址,并部署多臺tomcat服務器,每臺tomcat服務器之間通過相應的硬件及軟件互連,組成一個tomcat集群系統(tǒng),tomcat集群系統(tǒng)相當于第二接口服務器。通過一臺或多臺Nginx服務器組成第二反向代理服務器,在tomcat集群系統(tǒng)中,預先保存包含用戶ID、目標文件ID和云存儲地址的附件存儲表;在與Nginx服務器相連的Mysql數(shù)據(jù)庫中,預先保存用戶token、加密鏈接地址和云存儲地址。
其中,Nginx服務器作為第二反向代理服務器,用于接收客戶端的訪問請求,并根據(jù)訪問請求中的關鍵字,確定是第一訪問請求還是第二訪問請求;如果是第一訪問請求,轉發(fā)給tomcat集群系統(tǒng);如果是第二訪問請求,提取第二訪問請求中的用戶token和加密鏈接地址,查找Mysql數(shù)據(jù)庫中是否有與用戶token和加密鏈接地址對應的云存儲地址,如果有,轉發(fā)第二訪問請求至對應的云存儲地址,并將云存儲地址所在的云存儲服務器返回的第二訪問響應轉發(fā)至客戶端;
客戶端,通過用戶ID和目標文件ID,向Nginx服務器發(fā)起第一訪問請求,Nginx服務器將第一訪問請求轉發(fā)至tomcat集群系統(tǒng),并轉發(fā)來自tomcat集群系統(tǒng)的第一訪問響應至客戶端,客戶端通過第一訪問響應中的用戶token和加密鏈接地址發(fā)起第二訪問請求,Nginx服務器將第二訪問請求轉發(fā)至對應的云存儲地址,并將云存儲地址所在的云存儲服務器返回的第二訪問響應轉發(fā)至客戶端;
tomcat集群服務器,接收Nginx服務器轉發(fā)的客戶端的第一訪問請求,提取第一訪問請求中的用戶ID和目標文件ID,查找目標文件ID對應的云存儲地址,根據(jù)用戶ID生成用戶token,使用用戶token作為加密密鑰,通過SHA1或其它加密算法對云存儲地址進行加密(此處的加密算法應與Mysql數(shù)據(jù)庫中生成加密鏈接地址所使用的加密算法相同),生成加密鏈接地址,并將用戶token和加密鏈接地址通過Nginx服務器轉發(fā)給客戶端。
如圖5所示,根據(jù)本發(fā)明的第一種基于云服務的文件訪問方法,包括如下步驟:
客戶端發(fā)起第一訪問請求;
第一接口服務器接收第一訪問請求,生成加密鏈接地址,并返回給客戶端;
客戶端使用加密鏈接地址,發(fā)起第二訪問請求;
第一接口服務器查找是否存儲有加密鏈接地址對應的云存儲地址,如果有對應的云存儲地址,轉發(fā)第二訪問請求至對應的云存儲地址。
進一步地,第一訪問請求中包括用戶要訪問的目標文件信息,例如目標文件序列號(ID),第一接口服務器根據(jù)目標文件信息查找對應的云存儲地址,并生成加密鏈接地址;
可選地,第一訪問請求和第二訪問請求中還攜帶鑒權信息,以供第一接口服務器基于接收的鑒權信息進行鑒權操作。其中,第一訪問請求中的鑒權信息包括用戶的用戶標識(ID)和密碼,第一接口服務器通過該用戶標識和密碼驗證用戶是否合法,是則鑒權通過,在鑒權通過時返回配置有一定的生存時間的用戶令牌(token)至客戶端;客戶端發(fā)起的攜帶加密鏈接地址的第二訪問請求中攜帶該用戶令牌,以供第一接口服務器在且僅在用戶令牌的生存時間內(nèi),響應客戶端的第二訪問請求。
進一步地,第一接口服務器,根據(jù)來自客戶端的訪問請求中的關鍵字判斷是第一訪問請求還是第二訪問請求。
本實施例中,服務提供者部署云服務時,預先把目標文件存儲至對應的云存儲地址,并把用戶ID、目標文件ID、云存儲地址存儲在第一接口服務器或與第一接口服務器相連的第一數(shù)據(jù)庫中,第一接口服務器接收第一訪問請求時,在第一接口服務器或第一數(shù)據(jù)庫中查找目標文件ID對應的云存儲地址。另外預先把用戶token、加密鏈接地址、云存儲地址存儲在第一接口服務器中或與第一接口服務器相連的第二數(shù)據(jù)庫中,第一接口服務器接收第二訪問請求時,在第一接口服務器或與第一接口服務器相連的第二數(shù)據(jù)庫中驗證是否有與用戶token和加密鏈接地址對應的云存儲地址。可選地,第二數(shù)據(jù)庫為Mysql數(shù)據(jù)庫;第二數(shù)據(jù)庫的結構如上述表1所示。
可選地,第一接口服務器基于接收的第一訪問請求生成加密鏈接地址,具體包括:提取第一訪問請求中的用戶標識和目標文件標識,查找目標文件標識對應的云存儲地址,根據(jù)用戶標識生成用戶令牌,使用用戶令牌作為加密密鑰,通過安全哈希算法(SHA1)或其它加密算法對云存儲地址進行加密,生成加密鏈接地址。此處的加密算法應與服務提供者在第一接口服務器中或與第一接口服務器相連的第二數(shù)據(jù)庫中預先存儲的加密鏈接地址所使用的加密算法相同。例如:生成的加密鏈接地址,結構形如http://cloud-download.server.nubia.cn?path=加密地址。本發(fā)明的加密鏈接地址避免了文件存儲結構路徑直接暴露給客戶,從而防止了被有惡意的人解析使用。
可選地,第一接口服務器可以允許客戶端同時對多個文件進行訪問。本發(fā)明的文件訪問請求為文件下載請求,由于用戶token配置有一定的生存時間,因此,即便攻擊者截獲第二訪問請求中的用戶token和加密鏈接地址,也只能在用戶token的生存時間內(nèi)下載所截獲的加密鏈接地址對應的單個文件,通過在第一接口服務器端設置防火墻來防御攻擊者利用截獲的第二訪問請求發(fā)起分布式拒絕服務攻擊。
可選地,第一接口服務器可以為tomcat集群服務器。在tomcat集群服務器中,每臺tomcat服務器都是運行其自己進程的獨立服務器,這些進程可以彼此通信,對客戶端來說,多臺tomcat服務器就像是形成了一個單一系統(tǒng),協(xié)同起來向用戶提供應用程序、系統(tǒng)資源和數(shù)據(jù),從而解決網(wǎng)站訪問量過大導致web服務器崩潰的問題。
進一步地,在客戶端和tomcat集群服務器之間設置第一反向代理服務器,用于轉發(fā)客戶端和tomcat集群服務器之間的數(shù)據(jù)。通過設置第一反向代理服務器,客戶端不需要記住每個tomcat服務器的地址,可以直接訪問第一反向代理服務器的地址,由第一反向代理服務器將客戶端的文件訪問請求轉發(fā)至tomcat集群服務器中對應的tomcat服務器。可選地,第一反向代理服務器為Nginx服務器。
如圖6所示,根據(jù)本發(fā)明的第二種基于云服務的文件訪問方法,包括如下步驟:
客戶端發(fā)起第一訪問請求;
第二反向代理服務器將第一訪問請求轉發(fā)至第二接口服務器;
第二接口服務器基于接收的第一訪問請求生成加密鏈接地址,并通過第二反向代理服務器返回至客戶端;
客戶端使用加密鏈接地址發(fā)起第二訪問請求;
第二反向代理服務器查找是否存儲有加密鏈接地址對應的云存儲地址,如果有對應的云存儲地址,轉發(fā)第二訪問請求至對應的云存儲地址。
進一步地,第二反向代理服務器,根據(jù)來自客戶端的訪問請求中的關鍵字判斷是第一訪問請求還是第二訪問請求。
進一步地,第一訪問請求中包括用戶要訪問的目標文件信息,例如目標文件序列號(ID),第二接口服務器根據(jù)目標文件信息查找對應的云存儲地址,并生成加密鏈接地址;
可選地,第一訪問請求和第二訪問請求中還攜帶鑒權信息,以供第二接口服務器和第二反向代理服務器基于接收的鑒權信息進行鑒權操作。其中,第一訪問請求中的鑒權信息包括用戶的用戶標識(ID)和密碼,第二接口服務器通過該用戶標識和密碼驗證用戶是否合法,是則鑒權通過,在鑒權通過時返回配置有生存時間的用戶令牌(token)至客戶端;客戶端發(fā)起的攜帶加密鏈接地址的第二訪問請求中攜帶該用戶令牌,以供第二反向代理服務器在且僅在用戶令牌的生存時間內(nèi),響應客戶端的第二訪問請求。
本實施例中,服務提供者部署云服務時,預先把目標文件存儲至對應的云存儲地址,并把用戶ID、目標文件ID、云存儲地址存儲在第二接口服務器或與第二接口服務器相連的第三數(shù)據(jù)庫中,第二接口服務器接收第一訪問請求時,在第二接口服務器或第三數(shù)據(jù)庫中查找目標文件ID對應的云存儲地址。另外預先把用戶token、加密鏈接地址、云存儲地址存儲在第二反向代理服務器中或與第二反向代理服務器相連的第四數(shù)據(jù)庫中,第二反向代理服務器接收第二訪問請求時,在第二反向代理服務器或第四數(shù)據(jù)庫中查找是否有與用戶token和加密鏈接地址對應的云存儲地址。可選地,第四數(shù)據(jù)庫為Mysql數(shù)據(jù)庫;第四數(shù)據(jù)庫的結構如上述表1所示。
可選地,第二接口服務器基于接收的第一訪問請求生成加密鏈接地址,具體包括:提取第一訪問請求中的用戶標識和目標文件標識,查找與目標文件標識對應的云存儲地址,根據(jù)用戶標識生成用戶令牌,使用用戶令牌作為加密密鑰,通過安全哈希算法(SHA1)或其它加密算法對云存儲地址進行加密,生成加密鏈接地址。此處的加密算法應與服務提供者在第二反向代理服務器中或與第二反向代理服務器相連的第四數(shù)據(jù)庫中預先存儲的加密鏈接地址所使用的加密算法相同。例如:生成的加密鏈接地址,結構形如http://cloud-download.server.nubia.cn?path=加密地址。本發(fā)明的加密鏈接地址避免了文件存儲結構路徑直接暴露給客戶,從而防止了被有惡意的人解析使用。
可選地,第二接口服務器為tomcat集群服務器。
可選地,第二反向代理服務器為Nginx服務器。Nginx服務器,使用proxy_pass方式,轉發(fā)第二訪問請求至云存儲地址所在的云存儲服務器。本實施例通過第二反向代理服務器,直接將客戶端的第二訪問請求轉發(fā)至云存儲服務器,并將來自云存儲服務器的第二訪問響應直接轉發(fā)至客戶端,從而省略了一次通過第二接口服務器轉發(fā)的步驟,節(jié)約了帶寬。
可選地,Nginx服務器查找是否有與客戶端的第二訪問請求中的加密鏈接地址對應的云存儲地址時,使用TCP長連接方式與第四數(shù)據(jù)庫建立連接,以減小連接第四數(shù)據(jù)庫時的開銷。
可選地,第二接口服務器可以允許客戶端同時對多個文件進行訪問。本發(fā)明的文件訪問請求為文件下載請求,由于用戶token配置有一定的生存時間,因此,即便攻擊者截獲第二訪問請求中的用戶token和加密鏈接地址,也只能在用戶token的生存時間內(nèi)下載所截獲的加密鏈接地址對應的單個文件,通過在第二反向代理服務器端設置防火墻來防御攻擊者利用截獲的第二訪問請求發(fā)起分布式拒絕服務攻擊。
需要說明的是,在本文中,術語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者裝置不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者裝置所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括該要素的過程、方法、物品或者裝置中還存在另外的相同要素。
通過以上的實施方式的描述,本領域的技術人員可以清楚地了解到上述實施例方法可借助軟件加必需的通用硬件平臺的方式來實現(xiàn),當然也可以通過硬件,但很多情況下前者是更佳的實施方式。基于這樣的理解,本發(fā)明的技術方案本質(zhì)上或者說對現(xiàn)有技術做出貢獻的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機軟件產(chǎn)品存儲在一個存儲介質(zhì)(如ROM/RAM、磁碟、光盤)中,包括若干指令用以使得一臺終端設備(可以是手機,計算機,服務器,空調(diào)器,或者網(wǎng)絡設備等)執(zhí)行本發(fā)明各個實施例所述的方法。
以上僅為本發(fā)明的優(yōu)選實施例,并非因此限制本發(fā)明的專利范圍,凡是利用本發(fā)明說明書及附圖內(nèi)容所作的等效結構或等效流程變換,或直接或間接運用在其他相關的技術領域,均同理包括在本發(fā)明的專利保護范圍內(nèi)。