本發明實施例涉及計算機技術領域,尤其涉及一種訪問控制方法及裝置。
背景技術:
目前,在終端設備(例如手機、電腦等設備)中可以安裝應用程序,終端設備可以通過應用程序與應用程序對應的服務器交互,以獲取服務器提供的數據。
為了保證終端設備從服務器中獲取數據的安全性,終端設備通常對服務器進行https訪問。在https訪問過程中,服務器向終端設備發送證書,終端設備對證書進行驗證,在終端設備對證書驗證通過后,終端設備和服務器再進行通信。目前,通常在終端設備中預存一個證書庫,該證書庫中包括多種權威機構頒發的權威證書,以使終端設備可以通過該證書庫中的證書,對服務器發送的證書進行驗證。終端設備根據證書庫中的證書通常可以對權威證書驗證通過,對非權威證書可能無法驗證通過。
在實際應用過程中,應用程序中可以包括第三方訪問接口,以使用戶可以通過應用程序中的第三方接口訪問第三服務器。在終端設備訪問主服務器(應用程序對應的服務器)時,由主服務向終端設備發送主服務器的證書,在終端設備訪問第三方服務器(第三方應用程序對應的服務器)時,由第三方服務器向終端設備發送證書。應用程序廠商可以確定主服務器的證書為權威的,以使終端設備可以對主服務的證書驗證通過,但是,無法保證各個第三方服務器的證書也為權威的證書,進而無法確保終端設備對第三方服務器的證書驗證通過。當終端設備無法對第三方服務器的證書驗證通過時,終端設備無法通過應用程序訪問第三方應用程序,使得訪問異常,進而導致訪問控制的可靠性較差。
技術實現要素:
本發明實施例提供一種訪問控制方法及裝置,提高了訪問控制的可靠性。
第一方面,本發明實施例提供一種訪問控制方法,應用于主服務器對應的代理服務器,所述方法包括:
接收終端設備發送的、對第三方服務器進行訪問的第一訪問請求;
向所述終端設備發送所述主服務器的證書,以使所述終端設備對所述證書進行驗證;
向所述第三方服務器請求獲取所述第一訪問請求對應的目標數據;
在確定所述終端設備對接收到的證書驗證通過后,根據接收到的證書對所述目標數據進行加密,并向所述終端設備發送加密后的目標數據。
在一種可能的實施方式中,在確定所述終端設備對接收到的證書驗證通過后,根據接收到的證書對所述目標數據進行加密,包括:
接收所述終端設備發送的私鑰,所述私鑰為所述終端設備根據接收到的證書對隨機數加密得到的,所述私鑰用于指示所述終端設備對所述證書驗證通過;
根據所述私鑰加密所述目標數據。
在另一種可能的實施方式中,所述第一訪問請求中包括所述目標數據的統一資源定位符url地址,相應的,向所述第三方服務器請求獲取所述第一訪問請求對應的目標數據,包括:
根據所述url地址,向所述第三方服務器發送數據獲取請求;
接收所述第三方服務器發送的、通過預設加密算法加密的數據;
根據所述預設加密算法對應的解密算法解密所述數據,得到所述目標數據。
第二方面,本發明實施例提供一種訪問控制方法,應用于終端設備,所述終端設備中安裝有應用程序,所述方法包括:
在向代理服務器發送對第三方服務器進行訪問的第一訪問請求之后,接收所述代理服務器發送的主服務器的證書,所述主服務器為所述應用程序對應的服務器;
根據所述終端設備中的預設證書庫和/或所述應用程序中內置的預設證書,對接收到的證書進行驗證,其中,所述預設證書為內置在所述應用程序中的所述主服務器的證書。
在一種可能的實施方式中,在向代理服務器發送對第三方服務器進行訪問的第一訪問請求之前,還包括
接收用戶對第三方訪問接口的點擊操作;
獲取所述第三方訪問接口對應的所述第三方服務器;
確定向所述第三方服務器的標識在預設服務器標識集合中。
在另一種可能的實施方式中,若確定所述第三方服務器不在所述預設服務器標識集合中,所述方法包括:
向所述第三方服務器發送第二訪問請求;
接收所述第三方服務器發送的、所述第三方服務器的證書;
確定對接收到的所述第三方服務器的證書驗證通過。
在另一種可能的實施方式中,根據所述終端設備中的預設證書庫和/或所述應用程序中內置的預設證書,對接收到的證書進行驗證,包括:
根據所述預設證書庫中的證書,對接收到的證書進行驗證;
若驗證未通過,則判斷所述預設證書與接收到的證書是否相同,若是,則對接收到的證書驗證通過,若否,則對接收到的證書驗證未通過。
第三方面,本發明實施例提供一種訪問控制裝置,應用于主服務器對應的代理服務器,包括接收模塊、發送模塊、獲取模塊和加密模塊,其中,
所述接收模塊用于,接收終端設備發送的、對第三方服務器進行訪問的第一訪問請求;
所述發送模塊用于,向所述終端設備發送所述主服務器的證書,以使所述終端設備對所述證書進行驗證;
所述獲取模塊用于,向所述第三方服務器請求獲取所述第一訪問請求對應的目標數據;
所述加密模塊用于,在確定所述終端設備對接收到的證書驗證通過后,根據接收到的證書對所述目標數據進行加密;
所述發送模塊還用于,向所述終端設備發送加密后的目標數據。
在一種可能的實施方式中,所述加密模塊具體用于:
接收所述終端設備發送的私鑰,所述私鑰為所述終端設備根據接收到的證書對隨機數加密得到的,所述私鑰用于指示所述終端設備對所述證書驗證通過;
根據所述私鑰加密所述目標數據。
在另一種可能的實施方式中,所述第一訪問請求中包括所述目標數據的統一資源定位符url地址,相應的,所述獲取模塊具體用于:
根據所述url地址,向所述第三方服務器發送數據獲取請求;
接收所述第三方服務器發送的、通過預設加密算法加密的數據;
根據所述預設加密算法對應的解密算法解密所述數據,得到所述目標數據。
第四方面,本發明實施例提供一種訪問控制方法,應用于終端設備,所述終端設備中安裝有應用程序,包括發送模塊、接收模塊、驗證模塊,其中,
所述接收模塊用于,在所述發送模塊向代理服務器發送對第三方服務器進行訪問的第一訪問請求之后,接收所述代理服務器發送的主服務器的證書,所述主服務器為所述應用程序對應的服務器;
所述驗證模塊用于,根據所述終端設備中的預設證書庫和/或所述應用程序中內置的預設證書,對接收到的證書進行驗證,其中,所述預設證書為內置在所述應用程序中的所述主服務器的證書。
在一種可能的實施方式中,所述裝置還包括獲取模塊和確定模塊,其中,
所述接收模塊還用于,在所述發送模塊向代理服務器發送對第三方服務器進行訪問的第一訪問請求之前,接收用戶對第三方訪問接口的點擊操作;
所述獲取模塊用于,獲取所述第三方訪問接口對應的所述第三方服務器;
所述確定模塊用于,確定向所述第三方服務器的標識在預設服務器標識集合中。
在另一種可能的實施方式中,所述發送模塊還用于,在所述確定模塊確定若確定所述第三方服務器不在所述預設服務器標識集合中時,向所述第三方服務器發送第二訪問請求;
所述接收模塊還用于,接收所述第三方服務器發送的、所述第三方服務器的證書;
所述驗證模塊還用于,確定對接收到的所述第三方服務器的證書驗證通過。
在另一種可能的實施方式中,所述驗證模塊具體用于:
根據所述預設證書庫中的證書,對接收到的證書進行驗證;
若驗證未通過,則判斷所述預設證書與接收到的證書是否相同,若是,則對接收到的證書驗證通過,若否,則對接收到的證書驗證未通過。
本發明實施例提供的訪問控制方法及裝置,在終端設備對第三方服務器訪問時,終端設備向代理服務器發送對第三方服務器進行訪問的第一訪問請求,代理服務器向終端設備發送主服務器的證書,終端設備根據預設證書庫和/或應用程序中的預設證書,對證書進行驗證,這樣,只要代理服務器向終端設備發送的證書未被篡改,即可保證終端設備對接收到的證書驗證通過,進而可以保證終端設備可以通過代理服務器對第三方服務器進行正常訪問,避免了由于對第三方服務器的證書驗證不通過、而導致無法通過應用程序訪問第三方服務器的問題,進而提高訪問控制的可靠性。
附圖說明
為了更清楚地說明本發明實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作一簡單地介紹,顯而易見地,下面描述中的附圖是本發明的一些實施例,對于本領域普通技術人員來講,在不付出創造性勞動性的前提下,還可以根據這些附圖獲得其他的附圖。
圖1為本發明實施例提供的訪問控制方法的應用場景示意圖;
圖2為本發明實施例提供的訪問控制方法的流程示意圖一;
圖3為本發明實施例提供的訪問控制方法的流程示意圖二;
圖4為本發明實施例提供的一種訪問控制裝置的結構示意圖;
圖5為本發明實施例提供的另一種訪問控制裝置的結構示意圖一;
圖6為本發明實施例提供的另一種訪問控制裝置的結構示意圖二。
具體實施方式
為使本發明實施例的目的、技術方案和優點更加清楚,下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例是本發明一部分實施例,而不是全部的實施例。基于本發明中的實施例,本領域普通技術人員在沒有做出創造性勞動前提下所獲得的所有其他實施例,都屬于本發明保護的范圍。
圖1為本發明實施例提供的訪問控制方法的應用場景示意圖。請參見圖1,包括終端設備101、主服務器102、代理服務器103和第三方服務器104。在終端設備101中安裝有應用程序,應用程序中包括第三方服務器的第三方訪問接口。主服務器102和代理服務器103為終端設備101中的應用程序對應的服務器,其中,主服務器102用于提供應用程序所需數據信息,代理服務器103為主服務器102提供代理功能。第三方服務器104為終端設備101中的應用程序中的第三方訪問接口對應的服務器。
在本申請中,當終端設備101需要通過應用程序獲取主服務器102中的數據時,終端設備102直接對主服務器102進行https訪問,主服務器102向終端設備發送主服務器102的證書。當終端設備101通過應用程序中的第三方訪問接口訪問第三方服務器時,終端設備101通過主服務器102的代理服務器103對第三服務器104進行https訪問,在該過程中,第三方服務器104無需向終端設備101發送第三方服務器104的證書,而是由代理服務器102向終端設備101發送主服務器102的證書。
由上可知,在本申請中,無論終端設備101對主服務器102訪問,還是對第三方服務器104訪問,均向終端設備發送主服務器102的證書,以使終端設備101對主服務器102的證書進行驗證,進而避免對第三方服務器的證書驗證不通過而導致無法訪問第三方服務器的問題。
下面,通過具體實施例對本申請所示的技術方案進行詳細說明。需要說明的是,下面幾個具體實施例可以相互結合,對于相同或相似的內容,在不同的實施例中不再進行贅述。
圖2為本發明實施例提供的訪問控制方法的流程示意圖一。請參見圖2,該方法可以包括:
s201、終端設備向代理服務器發送對第三方服務器進行訪問的第一訪問請求。
在本發明實施例中,第一訪問請求為基于https的請求。
在終端設備中安裝有應用程序,在應用程序中設置有對第三方服務器進行訪問的第三方訪問接口。可選的,第三方訪問接口可以對應第三方服務器的一個鏈接。當用戶對第三方訪問接口進行預設操作時,例如點擊操作,終端設備可以通過代理服務器訪問第三方服務器。
可選的,終端設備向代理服務器發送對第三方服務器進行訪問的第一訪問請求。可選的,可以在第一訪問請求中攜帶第三方服務器的一個url,以使代理服務器可以根據該url在第三方服務器中獲取需要反饋給終端設備的內容。當然,第一訪問請求中還可以包括其它內容,本發明實施例對此不作具體限定。
s202、代理服務器向終端設備發送主服務器的證書。
在本發明實施例中,代理服務器中存儲的證書為主服務器的證書,因此,在代理服務器接收到第一訪問請求之后,代理服務器向終端設備發送主服務器的證書。
s203、終端設備對接收到的證書進行驗證。
可選的,在應用程序中預設有主服務器的證書,例如,可以在發布應用程序時,在應用程序中內置主服務器的證書。相應的,在終端設備接收到證書之后,終端設備可以根據終端設備中的預設證書庫和/或應用程序中的預設證書,對證書進行驗證。其中,預設證書庫中包括多個權威機構發布的權威證書。
可選的,終端設備可以先根據預設證書庫中的證書,對接收到的證書進行驗證,若驗證通過,則對主服務器的證書驗證結束。若驗證未通過,則判斷主服務器的證書與應用程序中預設的主服務器的證書是否相同,若是,則對證書驗證通過,若否,則對驗證驗證未通過。需要說明的是,終端設備通過預設證書庫中的證書,對接收到的證書的驗證過程可以參見現有技術中的任意一種過程,此處不再進行贅述。
當然,在實際應用過程中,也可以直接根據應用程序中內置的預設證書,對接收到的證書進行驗證。
在該過程中,當終端設備中的證書庫中包括的證書不夠全面時,則終端設備根據預設證書庫中的證書,可能無法對接收到的證書驗證通過。此時,還可以根據應用程序中內置的預設證書,對接收到的證書進行驗證,由于應用程序中內置的證書為主服務器的證書,該證書通常不會被攻擊,當終端設備接收到的證書未被篡改時,終端設備接收到的證書即為主服務器的證書,則可以保證終端設備接收到的證書與應用程序中內置的預設證書一致,進而可以保證終端設備對接收到的證書驗證通過。通過該方法,可以提高終端設備對接收到的證書進行驗證的可靠性。
需要說明的是,終端設備對于主服務器直接發送的證書,也可以通過上述發送對接收到的證書進行驗證。
s204、代理服務器向第三方服務器發送數據獲取請求。
代理服務器在接收到終端設備發送的第一訪問請求之后,可以根據第一訪問請求,生成數據獲取請求,并向第三方服務器發送數據獲取請求。
s205、第三方服務器向代理服務器發送目標數據。
在第三方服務器接收到數據獲取請求之后,獲取對應的目標數據,并向代理服務器發送目標數據。
可選的,為了保證第三方服務器和代理服務器之間數據傳遞的安全性,第三方服務器可以按照和代理服務器的約定加密算法,對目標數據進行加密,并向代理服務器發送加密后的目標數據。
s206、在終端設備對接收到證書驗證通過后,終端設備向代理服務器發送私鑰,私鑰為終端設備根據證書對隨機數加密得到的。
在終端設備對接收到的證書驗證通過之后,終端設備生成隨機數,并通過接收到的證書對生成的隨機數進行加密,得到私鑰,并向代理服務器發送該私鑰。
需要說明的是,s204-s205與s206可以順序執行,也可以并行執行,當然,也可以先執行s206,再執行s04-s205,本發明實施例對此順序不作具體限定。
當先執行s204-s205,再執行s206時,在終端設備對接收到的證書驗證通過之前,代理服務器先從第三方服務器獲取得到目標數據,這樣,在終端設備對接收到的證書驗證通過之后,代理服務器可以快速向終端設備發送目標數據,進而使得代理服務器向終端設備發送目標數據的效率較高。
當先執行s206,再執行s204-s205時,在終端設備對接收到的證書驗證通過之后,代理服務器才向第三方服務器請求獲取目標數據,相應的,在終端設備對接收到的證書未驗證通過時,則代理服務器無需向第三方服務器請求獲取目標數據,這樣,可以避免代理服務器向第三方服務器請求不必要的目標數據,進而可以降低代理服務器的負載。
s207、代理服務器根據私鑰加密目標數據。
在代理服務器接收到私鑰之后,代理服務器根據私鑰對目標數據進行加密。需要說明的是,代理服務器根據私鑰對目標數據進行加密的過程可以參見現有技術中的加密過程,此次不再進行贅述。
s208、代理服務器向終端設備發送根據私鑰加密后的目標數據。
需要說明的是,在代理服務器和終端設備本次通信的過程中,代理服務器和終端設備之間交互的數據均通過該私鑰進行加密,本發明對此不再進行贅述。
本發明實施例提供的訪問控制方法,在終端設備對第三方服務器訪問時,終端設備向代理服務器發送對第三方服務器進行訪問的第一訪問請求,代理服務器向終端設備發送主服務器的證書,終端設備根據預設證書庫和/或應用程序中的預設證書,對證書進行驗證,這樣,只要代理服務器向終端設備發送的證書未被篡改,即可保證終端設備對接收到的證書驗證通過,進而可以保證終端設備可以通過代理服務器對第三方服務器進行正常訪問,避免了由于對第三方服務器的證書驗證不通過、而導致無法通過應用程序訪問第三方服務器的問題。
在實際應用過程中,在應用程序中可能設置有多個第三方訪問接口,應用程序廠商為了節約成本,可能僅對部分第三方訪問接口對應的第三方服務器進行代理,即,終端設備通過代理服務器對部分第三方服務器進行訪問。相應的,可以在應用程序中設置預設服務器標識集合,當第三方服務器的標識在該預設服務器標識集合中時,則通過代理服務器訪問該第三方服務器,若否,則直接訪問該第三方服務器。具體的,請參見圖3所示的實施例。
圖3為本發明實施例提供的訪問控制方法的流程示意圖二。在圖2所示實施例的基礎上,請參見圖3,該方法可以包括:
s301、終端設備接收用戶對第三方訪問接口的點擊操作。
s302、終端設備獲取第三方訪問接口對應的第三方服務器。
s303、終端設備判斷第三方服務器的標識是否在預設服務器標識集合中。
若是,則執行s304-314。
若否,則執行s314-317。
預設服務器標識集合中包括多個服務器的標識,針對預設服務器標識集合中每一個標識對應的第三方服務器,終端設備訪問該部分第三方服務器時,均需要通過代理服務器進行訪問。
s304、終端設備向代理服務器發送對第三方服務器進行訪問的第一訪問請求,第一訪問請求中包括目標數據的url地址。
s305、代理服務器向終端設備發送主服務器的證書。
s306、終端設備根據終端設備中的預設證書庫和/或應用程序中的預設證書,對證書進行驗證。
s307、在終端設備對接收到的證書驗證通過之后,生成隨機數,并根據接收到的證書對隨機數進行加密,得到私鑰。
s308、終端設備向代理服務器發送私鑰。
s309、向第三方服務器發送數據獲取請求。
s310、第三方服務器獲取目標數據,并通過加密算法加密的目標數據。
s311、第三方服務器向代理服務器發送加密后的目標數據。
s312、代理服務器根據加密算法對應的解密算法,對加密的目標數據進行解密,得到目標數據。
s313、代理服務器根據私鑰對目標數據進行加密。
s314、代理服務器向終端設備發送根據私鑰加密的目標數據。
需要說明的是,s304-s314的執行過程可以參見圖2所示的實施例,此處不再進行贅述。
s315、終端設備向第三方服務器發送第二訪問請求。
s316、第三方服務器向終端設備發送第三方服務器的證書。
s317、終端設備確定對接收到的第三方服務器的證書驗證通過。
在s317中,終端設備不對接收到的第三方服務器的證書進行驗證,直接確定接收到的第三方服務器的證書驗證通過。
需要說明是,在s317之后,終端設備生成隨機數,并根據接收到的第三方服務器的證書對隨機數進行加密,生成私鑰,在終端設備和第三方服務器之后進行通信的過程中,相互傳遞的數據均采用私鑰進行加密,本發明實施例對此不再進行贅述。
圖4為本發明實施例提供的一種訪問控制裝置的結構示意圖。該裝置,應用于主服務器對應的代理服務器,請參見圖4,該裝置包括接收模塊11、發送模塊12、獲取模塊13和加密模塊14,其中,
所述接收模塊11用于,接收終端設備發送的、對第三方服務器進行訪問的第一訪問請求;
所述發送模塊12用于,向所述終端設備發送所述主服務器的證書,以使所述終端設備對所述證書進行驗證;
所述獲取模塊13用于,向所述第三方服務器請求獲取所述第一訪問請求對應的目標數據;
所述加密模塊14用于,在確定所述終端設備對接收到的證書驗證通過后,根據接收到的證書對所述目標數據進行加密;
所述發送模塊12還用于,向所述終端設備發送加密后的目標數據。
本發明實施例提供的訪問控制裝置可以執行上述方法實施例所示的技術方案,其實現原理以及有益效果類似,此處不再進行贅述。
在一種可能的實施方式中,所述加密模塊14具體用于:
接收所述終端設備發送的私鑰,所述私鑰為所述終端設備根據接收到的證書對隨機數加密得到的,所述私鑰用于指示所述終端設備對所述證書驗證通過;
根據所述私鑰加密所述目標數據。
在另一種可能的實施方式中,所述第一訪問請求中包括所述目標數據的統一資源定位符url地址,相應的,所述獲取模塊13具體用于:
根據所述url地址,向所述第三方服務器發送數據獲取請求;
接收所述第三方服務器發送的、通過預設加密算法加密的數據;
根據所述預設加密算法對應的解密算法解密所述數據,得到所述目標數據。
本發明實施例提供的訪問控制裝置可以執行上述方法實施例所示的技術方案,其實現原理以及有益效果類似,此處不再進行贅述。
圖5為本發明實施例提供的另一種訪問控制裝置的結構示意圖一。該裝置應用于終端設備,所述終端設備中安裝有應用程序。請參見圖5,該裝置可以包括發送模塊21、接收模塊22、驗證模塊23,其中,
所述接收模塊22用于,在所述發送模塊21向代理服務器發送對第三方服務器進行訪問的第一訪問請求之后,接收所述代理服務器發送的主服務器的證書,所述主服務器為所述應用程序對應的服務器;
所述驗證模塊23用于,根據所述終端設備中的預設證書庫和/或所述應用程序中內置的預設證書,對接收到的證書進行驗證,其中,所述預設證書為內置在所述應用程序中的所述主服務器的證書。
本發明實施例提供的訪問控制裝置可以執行上述方法實施例所示的技術方案,其實現原理以及有益效果類似,此處不再進行贅述。
圖6為本發明實施例提供的另一種訪問控制裝置的結構示意圖二。在圖5所示實施例的基礎上,請參見圖6,所述裝置還包括獲取模塊24和確定模塊25,其中,
所述接收模塊22還用于,在所述發送模塊21向代理服務器發送對第三方服務器進行訪問的第一訪問請求之前,接收用戶對第三方訪問接口的點擊操作;
所述獲取模塊24用于,獲取所述第三方訪問接口對應的所述第三方服務器;
所述確定模塊25用于,確定向所述第三方服務器的標識在預設服務器標識集合中。
在一種可能的實施方式中,所述發送模塊21還用于,在所述確定模塊25確定若確定所述第三方服務器不在所述預設服務器標識集合中時,向所述第三方服務器發送第二訪問請求;
所述接收模塊22還用于,接收所述第三方服務器發送的、所述第三方服務器的證書;
所述驗證模塊23還用于,確定對接收到的所述第三方服務器的證書驗證通過。
在另一種可能的實施方式中,所述驗證模塊23具體用于:
根據所述預設證書庫中的證書,對接收到的證書進行驗證;
若驗證未通過,則判斷所述預設證書與接收到的證書是否相同,若是,則對接收到的證書驗證通過,若否,則對接收到的證書驗證未通過。
本發明實施例提供的訪問控制裝置可以執行上述方法實施例所示的技術方案,其實現原理以及有益效果類似,此處不再進行贅述。
本領域普通技術人員可以理解:實現上述各方法實施例的全部或部分步驟可以通過程序指令相關的硬件來完成。前述的程序可以存儲于一計算機可讀取存儲介質中。該程序在執行時,執行包括上述各方法實施例的步驟;而前述的存儲介質包括:rom、ram、磁碟或者光盤等各種可以存儲程序代碼的介質。
最后應說明的是:以上各實施例僅用以說明本發明實施例的技術方案,而非對其限制;盡管參照前述各實施例對本發明實施例進行了詳細的說明,本領域的普通技術人員應當理解:其依然可以對前述各實施例所記載的技術方案進行修改,或者對其中部分或者全部技術特征進行等同替換;而這些修改或者替換,并不使相應技術方案的本質脫離本發明實施例方案的范圍。