開放接口調(diào)用的認(rèn)證方法與系統(tǒng)的制作方法
【專利摘要】本發(fā)明實施例公開了一種開放接口調(diào)用的認(rèn)證方法與系統(tǒng),其中,方法包括:服務(wù)提供平臺接收服務(wù)器端或客戶端發(fā)送的應(yīng)用程序的接口調(diào)用請求,其中的接口調(diào)用參數(shù)包括應(yīng)用標(biāo)識、私有密鑰與服務(wù)器端為本次接口調(diào)用分配的有效時間,私有密鑰由服務(wù)器端在服務(wù)提供平臺注冊后由服務(wù)提供平臺分配,客戶端在登錄服務(wù)器端并獲得授權(quán)后從服務(wù)器端獲取接口調(diào)用參數(shù);從預(yù)先分配的參數(shù)記錄中獲取該應(yīng)用標(biāo)識對應(yīng)的私有密鑰,并基于獲取到的私有密鑰對接口調(diào)用請求進(jìn)行認(rèn)證;若通過認(rèn)證,允許進(jìn)行相應(yīng)的接口調(diào)用;否則,拒絕接口調(diào)用請求方進(jìn)行相應(yīng)的接口調(diào)用。本發(fā)明實施例可以保證接口調(diào)用的安全性,接口調(diào)用流程簡單,接口調(diào)用效率較高。
【專利說明】開放接口調(diào)用的認(rèn)證方法與系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及互聯(lián)網(wǎng)技術(shù),尤其是一種開放接口調(diào)用的認(rèn)證方法與系統(tǒng)。
【背景技術(shù)】
[0002]互聯(lián)網(wǎng)服務(wù)提供平臺(Service Platform)提供開放接口供第三方開發(fā)者在開發(fā)互聯(lián)網(wǎng)應(yīng)用程序中進(jìn)行調(diào)用。這些開放接口,例如應(yīng)用編程接口(REST API),基于超文本傳輸協(xié)議(Hyper TextTransport Protocol,以下簡稱:HTTP)進(jìn)行通信。服務(wù)提供平臺對于所接收到的接口調(diào)用請求,應(yīng)該進(jìn)行有效的認(rèn)證,只響應(yīng)合法的接口調(diào)用請求。
[0003]現(xiàn)有技術(shù)中,針對存在應(yīng)用程序的服務(wù)器端/客戶端(C/S)以及服務(wù)提供平臺三方的接口調(diào)用場景中,主要通過以下兩種接口調(diào)用方法進(jìn)行接口調(diào)用:
[0004]第一種方法中,由應(yīng)用程序的服務(wù)器端(App Server)向服務(wù)提供平臺申請接口調(diào)用所需的密碼(APP key),服務(wù)器端使用該密碼向服務(wù)提供平臺發(fā)送接口調(diào)用請求,以請求進(jìn)行開放接口的調(diào)用。如果應(yīng)用程序的客戶端(APP Client)也需要進(jìn)行開放接口的調(diào)用,則由客戶端向服務(wù)器端請求服務(wù),則由服務(wù)器端直接將該密碼開放給客戶端,由客戶端自由地向服務(wù)提供平臺發(fā)送接口調(diào)用請求,以請求進(jìn)行開放接口的調(diào)用;
[0005]第二種方法中,由應(yīng)用程序的服務(wù)器端向服務(wù)提供平臺申請接口調(diào)用所需的密碼,服務(wù)器端使用該密碼向服務(wù)提供平臺發(fā)送接口調(diào)用請求,以請求進(jìn)行開放接口的調(diào)用。如果應(yīng)用程序的客戶端也需要進(jìn)行開放接口的調(diào)用,則由服務(wù)器端全權(quán)代理客戶端每次向服務(wù)提供平臺發(fā)送接口調(diào)用請求,再將獲得的內(nèi)容轉(zhuǎn)交給客戶端。
[0006]在實現(xiàn)本發(fā)明的過程中,發(fā)明人發(fā)現(xiàn)上述現(xiàn)有技術(shù)的接口調(diào)用方法至少存在以下問題:
[0007]第一種方法中,由服務(wù)器端將密碼開放給客戶端后,客戶端可以自由地向服務(wù)提供平臺請求進(jìn)行接口調(diào)用,服務(wù)器端無法對客戶端的調(diào)用請求進(jìn)行任何管控,導(dǎo)致接口調(diào)用的安全性較低;
[0008]第二種方法中,需要由服務(wù)器端全權(quán)代理客戶端每次向服務(wù)提供平臺發(fā)送接口調(diào)用請求,再將獲得的內(nèi)容轉(zhuǎn)交給客戶端,流程迂回復(fù)雜,接口調(diào)用效率低下,并且增加了服務(wù)器端的工作負(fù)荷,降低了服務(wù)器端的工作性能。
【發(fā)明內(nèi)容】
[0009]本發(fā)明實施例所要解決的技術(shù)問題是:提供一種開放接口調(diào)用的認(rèn)證方法與系統(tǒng),可以保證接口調(diào)用的安全性,并且,接口調(diào)用流程簡單,接口調(diào)用效率較高,客戶端在接口調(diào)用的過程中不增加服務(wù)器的工作負(fù)荷。
[0010]本發(fā)明實施例提供的一種開放接口調(diào)用的認(rèn)證方法,包括:
[0011]服務(wù)提供平臺接收接口調(diào)用請求方發(fā)送的應(yīng)用程序的接口調(diào)用請求,所述接口調(diào)用請求中包括接口調(diào)用參數(shù);所述接口調(diào)用請求方包括具有緊耦合關(guān)系的服務(wù)器端或客戶端;所述接口調(diào)用參數(shù)包括唯一標(biāo)識一個應(yīng)用程序的應(yīng)用標(biāo)識、服務(wù)提供平臺為所述應(yīng)用程序分配的私有密鑰與服務(wù)器端為本次接口調(diào)用分配的有效時間;所述私有密鑰由服務(wù)器端在所述服務(wù)提供平臺注冊后由服務(wù)提供平臺為所述應(yīng)用程序分配,所述客戶端在登錄服務(wù)器端并獲得所述服務(wù)器端授權(quán)后從所述服務(wù)器端獲取所述接口調(diào)用參數(shù);
[0012]所述服務(wù)提供平臺從預(yù)先分配的參數(shù)記錄中獲取所述應(yīng)用標(biāo)識對應(yīng)的私有密鑰,并基于獲取到的私有密鑰與所述有效時間對所述接口調(diào)用請求進(jìn)行認(rèn)證;
[0013]響應(yīng)于所述接口調(diào)用請求通過認(rèn)證,所述服務(wù)提供平臺允許所述接口調(diào)用請求方進(jìn)行相應(yīng)的接口調(diào)用;
[0014]否則,響應(yīng)于所述接口調(diào)用請求未通過認(rèn)證,所述服務(wù)提供平臺拒絕所述接口調(diào)用請求方進(jìn)行相應(yīng)的接口調(diào)用。
[0015]本發(fā)明實施例提供的一種開放接口調(diào)用的認(rèn)證系統(tǒng),包括服務(wù)提供平臺與接口調(diào)用請求方,所述接口調(diào)用請求方包括具有緊耦合關(guān)系的服務(wù)器端或客戶端;
[0016]所述接口調(diào)用請求方,用于向所述服務(wù)提供平臺發(fā)送應(yīng)用程序的接口調(diào)用請求,所述接口調(diào)用請求中包括接口調(diào)用參數(shù),所述接口調(diào)用參數(shù)包括唯一標(biāo)識一個應(yīng)用程序的應(yīng)用標(biāo)識、服務(wù)提供平臺為所述應(yīng)用程序分配的私有密鑰與服務(wù)器端為本次接口調(diào)用分配的有效時間;所述私有密鑰由服務(wù)器端在所述服務(wù)提供平臺注冊后由服務(wù)提供平臺為所述應(yīng)用程序分配,所述客戶端在登錄服務(wù)器端并獲得所述服務(wù)器端授權(quán)后從所述服務(wù)器端獲取所述接口調(diào)用參數(shù);
[0017]所述服務(wù)提供平臺,用于接收接口調(diào)用請求方發(fā)送的應(yīng)用程序的接口調(diào)用請求;從預(yù)先分配的參數(shù)記錄中獲取所述應(yīng)用標(biāo)識對應(yīng)的私有密鑰,并基于獲取到的私有密鑰與所述有效時間對所述接口調(diào)用請求進(jìn)行認(rèn)證;響應(yīng)于所述接口調(diào)用請求通過認(rèn)證,允許所述接口調(diào)用請求方進(jìn)行相應(yīng)的接口調(diào)用;否則,響應(yīng)于所述接口調(diào)用請求未通過認(rèn)證,拒絕所述接口調(diào)用請求方進(jìn)行相應(yīng)的接口調(diào)用。
[0018]基于本發(fā)明上述實施例提供的開放接口調(diào)用的認(rèn)證方法與系統(tǒng),服務(wù)器端在服務(wù)提供平臺注冊后服務(wù)提供平臺可以為應(yīng)用程序分配接口調(diào)用參數(shù),客戶端在登錄服務(wù)器端并獲得服務(wù)器端授權(quán)后從服務(wù)器端獲取該接口調(diào)用參數(shù),包括唯一標(biāo)識一個應(yīng)用程序的應(yīng)用標(biāo)識(AppID)、服務(wù)提供平臺為該應(yīng)用程序分配的私有密鑰(APPKEY)與服務(wù)器端為本次接口調(diào)用分配的有效時間(Service-Expires),客戶端或服務(wù)器端向服務(wù)提供平臺請求接口調(diào)用時,向服務(wù)提供平臺發(fā)送接口調(diào)用請求,提供應(yīng)用標(biāo)識AppID、私有密鑰APPKEY與有效時間Service-Expires,服務(wù)提供平臺從預(yù)先分配的參數(shù)記錄中獲取接口調(diào)用請求中應(yīng)用標(biāo)識AppID對應(yīng)的私有密鑰APPKEY,并基于該獲取到的私有密鑰APPKEY與接口調(diào)用請求中的有效時間對接口調(diào)用請求進(jìn)行認(rèn)證,只有在接口調(diào)用請求通過認(rèn)證時,服務(wù)提供平臺才允許客戶端進(jìn)行相應(yīng)的接口調(diào)用,否則,服務(wù)提供平臺拒絕客戶端進(jìn)行相應(yīng)的接口調(diào)用。由于客戶端只有在登錄服務(wù)器端并獲得服務(wù)器端授權(quán)后才能從服務(wù)器端獲取進(jìn)行接口調(diào)用所需的接口調(diào)用參數(shù),包括私有密鑰APPKEY與有效時間Service-Expires,從而通過服務(wù)提供平臺的認(rèn)證后獲得對所請求服務(wù)的響應(yīng),為服務(wù)端提供了對客戶端接口調(diào)用的一定程度管控,與現(xiàn)有技術(shù)相比,提高了接口調(diào)用的安全性;另外,客戶端只有在登錄服務(wù)器端并獲得服務(wù)器端授權(quán)后才能從服務(wù)器端獲取進(jìn)行接口調(diào)用所需的接口調(diào)用參數(shù)后,即可獨立地向服務(wù)提供平臺進(jìn)行接口調(diào)用,無需由服務(wù)器端全權(quán)代理客戶端每次向服務(wù)提供平臺發(fā)送接口調(diào)用請求,再將獲得的內(nèi)容轉(zhuǎn)交給客戶端,相對于現(xiàn)有技術(shù),本發(fā)明實施例為客戶端提供了一種相對獨立的接口調(diào)用過程,接口調(diào)用流程中認(rèn)證流程簡單有效,接口調(diào)用效率較高,客戶端在接口調(diào)用的過程中不增加服務(wù)器的工作負(fù)荷。本發(fā)明可以適用于任意具有服務(wù)端/客戶端結(jié)構(gòu)且具有緊耦合關(guān)系的互聯(lián)網(wǎng)應(yīng)用程序調(diào)用的場景。
[0019]下面通過附圖和實施例,對本發(fā)明的技術(shù)方案做進(jìn)一步的詳細(xì)描述。
【專利附圖】
【附圖說明】
[0020]為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0021]圖1為本發(fā)明開放接口調(diào)用的認(rèn)證方法一個實施例的流程圖。
[0022]圖2為本發(fā)明開放接口調(diào)用的認(rèn)證方法另一個實施例的流程圖。
[0023]圖3為本發(fā)明開放接口調(diào)用的認(rèn)證方法又一個實施例的流程圖。
[0024]圖4為本發(fā)明開放接口調(diào)用的認(rèn)證方法再一個實施例的流程圖。
[0025]圖5為本發(fā)明開放接口調(diào)用的認(rèn)證系統(tǒng)一個實施例的結(jié)構(gòu)示意圖。
【具體實施方式】
[0026]下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例。基于本發(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護(hù)的范圍。
[0027]本發(fā)明實施例針對服務(wù)提供平臺提供開放接口供具有C/S結(jié)構(gòu)且具有緊耦合關(guān)系的互聯(lián)網(wǎng)應(yīng)用程序調(diào)用的環(huán)境下,且接口調(diào)用基于HTTP進(jìn)行通信,設(shè)計一種有效的接口調(diào)用認(rèn)證方法,主要體現(xiàn)在:1)認(rèn)證流程的設(shè)計簡單有效,所需的計算開銷小;2)適用于具有C/S結(jié)構(gòu)的應(yīng)用,且服務(wù)器端控制管理客戶端,只有當(dāng)客戶端登錄服務(wù)器端后,在獲取服務(wù)器端授權(quán)后才有可能調(diào)用互聯(lián)網(wǎng)服務(wù)提供平臺的開放接口獲取相應(yīng)服務(wù)。本發(fā)明實施例適用于具有服務(wù)端/客戶端結(jié)構(gòu)的互聯(lián)網(wǎng)應(yīng)用程序要求通過服務(wù)器端直接調(diào)用接口及從客戶端調(diào)用接口的場景。
[0028]本發(fā)明實施例中,互聯(lián)網(wǎng)服務(wù)提供平臺開放基于HTTP的接口,第三方所開發(fā)的互聯(lián)網(wǎng)應(yīng)用程序具有C/S結(jié)構(gòu)且具有緊耦合關(guān)系,即:客戶端與服務(wù)器端可通過內(nèi)部自定義的通信協(xié)議進(jìn)行安全有效的通信。其中的緊耦合關(guān)系是指,客戶端與服務(wù)器端之間是緊密結(jié)合的,某應(yīng)用程序的服務(wù)器端僅向某應(yīng)用程序的客戶端提供服務(wù),并且服務(wù)器端對客戶端有一定的約束管控能力。
[0029]其中的互聯(lián)網(wǎng)服務(wù)提供平臺,提供開放接口,例如存儲服務(wù)的開放接口,供開發(fā)者調(diào)用。服務(wù)器端為應(yīng)用程序的服務(wù)端系統(tǒng),保存所有與客戶端應(yīng)用程序相關(guān)的信息,使用服務(wù)提供平臺提供的服務(wù)。客戶端為應(yīng)用程序的客戶端,與服務(wù)器端具有緊耦合的關(guān)系,一般為C/S架構(gòu),可定義自己的內(nèi)部通信協(xié)議。
[0030]圖1為本發(fā)明開放接口調(diào)用的認(rèn)證方法一個實施例的流程圖。如圖1所示,該實施例開放接口調(diào)用的認(rèn)證方法包括:[0031]101,服務(wù)提供平臺接收接口調(diào)用請求方發(fā)送的應(yīng)用程序的接口調(diào)用請求,該接口調(diào)用請求中包括接口調(diào)用參數(shù)。其中的接口調(diào)用參數(shù)包括唯一標(biāo)識一個應(yīng)用程序的應(yīng)用標(biāo)識AppID、服務(wù)提供平臺為該應(yīng)用程序分配的私有密鑰APPKEY與服務(wù)器端為本次接口調(diào)用分配的有效時間Service-Expires。
[0032]本發(fā)明實施例中的接口調(diào)用請求方包括服務(wù)器端或客戶端,服務(wù)器端與客戶端具有緊耦合關(guān)系,一般為C/S結(jié)構(gòu),可以定義自己的內(nèi)容通信協(xié)議。其中的私有密鑰APPKEY由服務(wù)器端在服務(wù)提供平臺注冊后由服務(wù)提供平臺為該應(yīng)用程序分配,客戶端在登錄服務(wù)器端并獲得服務(wù)器端授權(quán)后可以從服務(wù)器端獲取該接口調(diào)用參數(shù)。
[0033]102,服務(wù)提供平臺從預(yù)先分配的參數(shù)記錄中獲取接口調(diào)用請求中應(yīng)用標(biāo)識AppID對應(yīng)的私有密鑰APPKEY,并基于獲取到的私有密鑰APPKEY與接口調(diào)用請求中的有效時間,對接口調(diào)用請求進(jìn)行認(rèn)證。
[0034]響應(yīng)于接口調(diào)用請求通過認(rèn)證,執(zhí)行103的操作。否則,響應(yīng)于接口調(diào)用請求中未通過認(rèn)證,執(zhí)行104的操作。
[0035]103,服務(wù)提供平臺允許接口調(diào)用請求方進(jìn)行相應(yīng)的接口調(diào)用。
[0036]之后,不再執(zhí)行本實施例的后續(xù)操作。
[0037]104,服務(wù)提供平臺拒絕接口調(diào)用請求方進(jìn)行相應(yīng)的接口調(diào)用。
[0038]本發(fā)明上述實施例提供的開放接口調(diào)用的認(rèn)證方法,服務(wù)器端在服務(wù)提供平臺注冊后服務(wù)提供平臺可以為應(yīng)用程序分配接口調(diào)用參數(shù),客戶端在登錄服務(wù)器端并獲得服務(wù)器端授權(quán)后從服務(wù)器端獲取該接口調(diào)用參數(shù),客戶端或服務(wù)器端向服務(wù)提供平臺請求接口調(diào)用時,向服務(wù)提供平臺發(fā)送接口調(diào)用請求,提供應(yīng)用標(biāo)識、私有密鑰與服務(wù)器端為本次接口調(diào)用分配的有效時間,服務(wù)提供平臺從預(yù)先分配的參數(shù)記錄中獲取接口調(diào)用請求中應(yīng)用標(biāo)識對應(yīng)的私有密鑰,并基于該該獲取到的私有密鑰與接口調(diào)用請求中的有效時間對接口調(diào)用請求進(jìn)行認(rèn)證,只有在接口調(diào)用請求通過認(rèn)證時,服務(wù)提供平臺才允許客戶端進(jìn)行相應(yīng)的接口調(diào)用,否則,服務(wù)提供平臺拒絕客戶端進(jìn)行相應(yīng)的接口調(diào)用。由于客戶端只有在登錄服務(wù)器端并獲得服務(wù)器端授權(quán)后才能從服務(wù)器端獲取進(jìn)行接口調(diào)用所需的接口調(diào)用參數(shù),包括私有密鑰與有效時間,從而通過服務(wù)提供平臺的認(rèn)證后獲得對所請求服務(wù)的響應(yīng),為服務(wù)端提供了對客戶端接口調(diào)用的一定程度管控,提高了接口調(diào)用的安全性;另外,客戶端只有在登錄服務(wù)器端并獲得服務(wù)器端授權(quán)后才能從服務(wù)器端獲取進(jìn)行接口調(diào)用所需的接口調(diào)用參數(shù)后,即可獨立地向服務(wù)提供平臺進(jìn)行接口調(diào)用,無需由服務(wù)器端全權(quán)代理客戶端每次向服務(wù)提供平臺發(fā)送接口調(diào)用請求,再將獲得的內(nèi)容轉(zhuǎn)交給客戶端,為客戶端提供了一種相對獨立的接口調(diào)用過程,接口調(diào)用流程中認(rèn)證流程簡單有效,接口調(diào)用效率較高,客戶端在接口調(diào)用的過程中不增加服務(wù)器的工作負(fù)荷。本發(fā)明可以適用于任意具有服務(wù)端/客戶端結(jié)構(gòu)且具有緊耦合關(guān)系的互聯(lián)網(wǎng)應(yīng)用程序調(diào)用的場景。
[0039]根據(jù)本發(fā)明開放接口調(diào)用的認(rèn)證方法的一個示例而非限制,服務(wù)提供平臺具體接收接口調(diào)用請求方通過統(tǒng)一資源標(biāo)識符(UniformResource Identifier,以下簡稱:URI)發(fā)送的應(yīng)用程序的接口調(diào)用請求。相應(yīng)地,接口調(diào)用請求中的接口調(diào)用參數(shù)還可以包括URI。接口調(diào)用請求中包括接口調(diào)用參數(shù)具體可以是:接口調(diào)用請求中包括應(yīng)用標(biāo)識AppID有效時間Service-Expires與第一認(rèn)證數(shù)據(jù)Service-Auth,該第一認(rèn)證數(shù)據(jù)Service-Auth由服務(wù)器端利用預(yù)設(shè)加密算法對發(fā)送接口調(diào)用請求的UR1、服務(wù)提供平臺為該應(yīng)用程序分配的私有密鑰APPKEY與服務(wù)器端為本次接口調(diào)用分配的有效時間Service-Expires進(jìn)行加密得到。
[0040]示例性地,其中的預(yù)設(shè)加密算法具體可以包括但不限于摘要生成算法HMAC_SHA1。本發(fā)明實施例中,采用的加密算法Hmac-Shal的計算開銷小,使得開放接口調(diào)用的認(rèn)證流程所需的計算開銷小。
[0041]圖2為本發(fā)明開放接口調(diào)用的認(rèn)證方法另一個實施例的流程圖。如圖2所示,該實施例開放接口調(diào)用的認(rèn)證方法包括:
[0042]201,服務(wù)提供平臺接收接口調(diào)用請求方發(fā)送的應(yīng)用程序的接口調(diào)用請求,該接口調(diào)用請求中包括接口調(diào)用參數(shù)。其中的接口調(diào)用參數(shù)包括請求調(diào)用的應(yīng)用程序的應(yīng)用標(biāo)識AppID、服務(wù)提供平臺為該應(yīng)用程序分配的私有密鑰APPKEY與服務(wù)器端為本次接口調(diào)用分配的有效時間Service-Expires。服務(wù)提供平臺為每個應(yīng)用程序生成私有密鑰APPKEY后,可以在后臺數(shù)據(jù)庫中更新預(yù)先分配的參數(shù)記錄,包括每個AppId及其對應(yīng)的私有密鑰AppKey,其中的私有密鑰AppKey唯一且不公開。
[0043]本發(fā)明實施例中的接口調(diào)用請求方包括具有緊耦合關(guān)系的服務(wù)器端或客戶端。其中,服務(wù)器端在服務(wù)提供平臺注冊后,可以在相應(yīng)的注冊帳號下申請服務(wù),由服務(wù)器端為該應(yīng)用程序分配私有密鑰APPKEY,客戶端只有在登錄服務(wù)器端并獲得服務(wù)器端授權(quán)后才可以從服務(wù)器端獲取該私有密鑰APPKEY以及服務(wù)器端為本次接口調(diào)用分配的有效時間Service-Expires,以直接向服務(wù)提供平臺請求服務(wù),具體可以使用HTTP協(xié)議進(jìn)行通信。
[0044]202,服務(wù)提供平臺從預(yù)先分配的參數(shù)記錄中獲取接口調(diào)用請求中應(yīng)用標(biāo)識AppID對應(yīng)的APPKEY。
[0045]203,服務(wù)提供平臺利用預(yù)設(shè)加密算法對發(fā)送接口調(diào)用請求的UR1、基于接口調(diào)用請求中應(yīng)用標(biāo)識AppID從預(yù)先分配的參數(shù)記錄中獲取到的APPKEY與有效時間Service-Expires進(jìn)行加密,得到第二認(rèn)證數(shù)據(jù)Service-Auth。
[0046]204,服務(wù)提供平臺識別第一認(rèn)證數(shù)據(jù)與第二認(rèn)證數(shù)據(jù)是否一致,以及當(dāng)前時刻是否在接口調(diào)用請求中的有效時間Service-Expires內(nèi)。
[0047]若第一認(rèn)證數(shù)據(jù)與第二認(rèn)證數(shù)據(jù)一致,且當(dāng)前時刻在接口調(diào)用請求中的有效時間Service-Expires內(nèi),貝U接口調(diào)用請求通過認(rèn)證,執(zhí)行205的操作。
[0048]否則,若第一認(rèn)證數(shù)據(jù)與第二認(rèn)證數(shù)據(jù)不一致,和/或當(dāng)前時刻不在接口調(diào)用請求中的有效時間Service-Expires內(nèi),貝U接口調(diào)用請求未通過認(rèn)證,執(zhí)行206的操作。
[0049]其中的有效時間Service-Expires,可以被服務(wù)器端用來管控客戶端能自由請求接口調(diào)用的時間長度。服務(wù)提供平臺收到接口調(diào)用請求后,將當(dāng)前時刻與接口調(diào)用請求中的有效時間比較,如果當(dāng)前時刻晚于有效時間規(guī)定的最后時刻,則認(rèn)為第一認(rèn)證數(shù)據(jù)過期,接口調(diào)用請求未通過認(rèn)證,無法繼續(xù)使用相應(yīng)的服務(wù)。
[0050]如果服務(wù)器端當(dāng)前的系統(tǒng)時間與服務(wù)提供平臺的系統(tǒng)時間不一致,可以設(shè)定以服務(wù)提供平臺的系統(tǒng)時間為準(zhǔn),同時過期時間的判定以服務(wù)提供平臺在接收到接口調(diào)用請求時的當(dāng)前系統(tǒng)時刻為準(zhǔn)。
[0051]205,服務(wù)提供平臺允許接口調(diào)用請求方進(jìn)行相應(yīng)的接口調(diào)用。
[0052]之后,不再執(zhí)行本實施例的后續(xù)操作。
[0053]基于204?205的操作,服務(wù)提供平臺確認(rèn)接口調(diào)用請求所請求的資源具有合法性、時間在有效期內(nèi),才允許接口調(diào)用請求方進(jìn)行相應(yīng)的接口調(diào)用,即使互聯(lián)網(wǎng)中其他人截取到該接口調(diào)用請求包括的第一認(rèn)證數(shù)據(jù)并復(fù)制利用,也只能在短暫的有效期內(nèi)可以使用,超過有效期無法通過認(rèn)證,從而提高了認(rèn)證的安全性與有效性。[0054]206,服務(wù)提供平臺拒絕接口調(diào)用請求方進(jìn)行相應(yīng)的接口調(diào)用。
[0055]根據(jù)本發(fā)明開放接口調(diào)用的認(rèn)證方法的另一個具體示例而非限制,接口調(diào)用請求方發(fā)送的接口調(diào)用請求具體可以為基于HTTP的HTTP請求。相應(yīng)地,該接口調(diào)用請求中包括應(yīng)用標(biāo)識AppID、有效時間Service-Expires與第一認(rèn)證數(shù)據(jù)Service-Auth具體為:在HTTP請求的報文頭部包括應(yīng)用標(biāo)識AppID、有效時間Service-Expires與第一認(rèn)證數(shù)據(jù)Service-Auth。
[0056]示例性地,在本發(fā)明上述實施例中,服務(wù)提供平臺接收接口調(diào)用請求方發(fā)送的應(yīng)用程序的接口調(diào)用請求之前,可以先由接口調(diào)用請求方生成HTTP請求。
[0057]圖3為本發(fā)明開放接口調(diào)用的認(rèn)證方法又一個實施例的流程圖。如圖3所示,該實施例中,接口調(diào)用請求方具體可以通過如下方式生成HTTP請求:
[0058]301,獲取基于HTTP發(fā)送應(yīng)用程序的接口調(diào)用請求的URI,例如,http://116.228.171.53/Storage/api/File?p=backup/data.txt&appid=storage。
[0059]302,獲取URI中的相對地址部分,該相對地址部分包括第一查詢字符串。
[0060]其中,URI中的相對地址部分,例如可以是URI中以/api/開頭的部分,即上述 URI 實例中的 api/File?p=backup/data.txt&appid=storage 部分。查詢字符串,例如可以是問號(?)之后的鍵值對構(gòu)成的字符串,即上述URI實例中的p=backup/data.txt&appid=storage
[0061]303,將第一查詢字符串按照預(yù)設(shè)字典順序重新排序,得到新的第一查詢字符串。
[0062]預(yù)設(shè)字典順序,例如依據(jù)字典中的順序,字母a在b前,數(shù)字I在2前。按照預(yù)設(shè)字典順序重新排序,例如,依據(jù)字段順序kl=vl在k2=v2之前,則重新排序?qū)2=v2&kl=vl變?yōu)?kl=vl&k2=v20
[0063]304,去除新的第一查詢字符串中的分割符,得到新的第一字符串。
[0064]示例性地,分割符具體可以預(yù)先設(shè)定,包括但不限于以下雙引號“”中的符號之一:
UU 0U \ U /
?、&、 / O
[0065]305,以服務(wù)提供平臺為應(yīng)用程序分配的私有密鑰APPKEY作為預(yù)設(shè)加密算法的密鑰,計算服務(wù)器端為本次接口調(diào)用分配的有效時間Service-Expires,得到第一字節(jié)流數(shù)組。
[0066]其中,有效時間Service-Expires的格式可以是yyyy-MM-ddHH:mm: ss,例如,2011-09-1217:39:26。
[0067]306,對第一字節(jié)流數(shù)組按照內(nèi)容傳輸編碼(Base64)編碼方式進(jìn)行編碼,得到第一接入密鑰(AccessKey)。
[0068]307,將第一接入密鑰AccessKey作為預(yù)設(shè)加密算法的密鑰計算新的第一字符串,得到第一消息認(rèn)證碼。
[0069]308,對第一消息認(rèn)證碼按照Base64編碼方式進(jìn)行編碼,得到第一認(rèn)證數(shù)據(jù)Service-Auth。
[0070]309,將應(yīng)用標(biāo)識AppID、第一認(rèn)證數(shù)據(jù)Service-Auth與服務(wù)器端為該應(yīng)用程序分配的有效時間Service-Expires加入到基于HTTP發(fā)送應(yīng)用程序的接口調(diào)用請求的HTTP報文的頭部,得到HTTP請求。
[0071]根據(jù)本發(fā)明實施例的又一個具體示例而非限制,圖3所示的實施例中,服務(wù)器端可以直接按照圖3所示實施例的流程生成HTTP請求。接口調(diào)用請求方為客戶端時,客戶端可以先登錄服務(wù)器端,基于HTTP向服務(wù)器端發(fā)送應(yīng)用程序的接口調(diào)用請求,該請求中包括請求調(diào)用的應(yīng)用程序的應(yīng)用標(biāo)識AppID。服務(wù)器端接收到客戶端發(fā)送的該接口調(diào)用請求后,可以為該應(yīng)用程序分配的有效時間并執(zhí)行圖3所示實施例中301~306的操作,并在得到第一接入密鑰后將該第一接入密鑰AccessKey與為本次接口調(diào)用分配的有效時間Service-Expires發(fā)送給客戶端,之后,由客戶端執(zhí)行307~309的操作,最終生成HTTP請求。
[0072]以下以一個具體的應(yīng)用實例對圖3所示的實施例進(jìn)行進(jìn)一步說明。
[0073]假設(shè)服務(wù)提供平臺的連接點為http://116.228.171.53/Storage,在服務(wù)器端以appid=storage為參數(shù)調(diào)用接口 /api/File獲取文件backup/data, txt。在服務(wù)器端以appid=storage為參數(shù),通過如下URI向服務(wù)提供平臺提交接口調(diào)用請求:
[0074]GET
[0075]http://116.2 2 8.1 7 1.53/Storage / api/Fi le?p = backup / data.txt&appid=storage
[0076]基于上述圖3所示實施例,先將URI中的http://116.228.171.53/Storage/部分去掉,變成
[0077]GETapi/File?p=backup/data.txt&appid=storage,然后將問號(?)之后的第一查詢字符串p=backup/data.txt&appid=storage以分割符(&)分割為兩個字符串,按照預(yù)設(shè)字典順序排列,將appid=storage排列在p=backup/data.txt之前,變成
[0078]GET ap i /Fi I e?app i d=s torage&p=backup/data, txt,最后去掉其中的分隔符(/.&),得到新的第一字符串如下:
[0079]GETapiFi Ie?appid=storagep=backupdatatxt
[0080]假設(shè)AppKey=6ffGhwi2pN+UdeK2klFCgoBeYH4=, ServiceExpires=2011-09-1217:39:26,則經(jīng)過305與306的操作,進(jìn)一步可得到第一 AccessKey為:
[0081 ] NxEksznFzdLJhnmzHs6fZz2Btng=
[0082]用第一 AccessKey作為Hmac-Shal算法的密鑰,計算新的第一字符串GETapiFile?appid=storagep=backupdatatxt,得到第一消息認(rèn)證碼,進(jìn)行Base64編碼后得到如下所示的第一 Service Auth:
[0083]VYUfvxE6tiC4JSPyczxQXokV0RE=
[0084]則最后在進(jìn)行應(yīng)用編程接口(API)調(diào)用時, 服務(wù)器端向服務(wù)提供平臺發(fā)送的HTTP請求如下:
[0085]GET
[0086]http://116.2 2 8.1 7 1.53/Storage / api/Fi le?p = backup / data.txt&appid=storageHTTP/l.1
[0087]Content-Type: application/octet-stream
[0088]Service-Expires:2011-09-1217:39:26[0089]Service-Auth:VYUfvxE6tiC4JSPyczxQXokV0RE=
[0090]上述HTTP請求中,Content-Type表示發(fā)送給服務(wù)提供平臺的具體數(shù)據(jù)類型,供服務(wù)提供平臺進(jìn)行相應(yīng)處理,application/octet-stream表示發(fā)送的是二進(jìn)制流。HTTP/1.1表示支持的HTTP版本信息,與其中的Content-Type —樣是HTTP請求的報文頭部的常規(guī)內(nèi)容,構(gòu)建HTTP請求時已經(jīng)生成。
[0091]仍然假設(shè)服務(wù)提供平臺的連接點為http://116.228.171.53/Storage,在客戶端以appid=storage為參數(shù)調(diào)用接口 /api/File獲取文件backup/data, txt。客戶端在登錄服務(wù)器端后,向服務(wù)器端發(fā)送接口調(diào)用的請求消息,請求在有效時間Service Expires內(nèi)對服務(wù)提供平臺進(jìn)行接口調(diào)用,該請求消息中包括應(yīng)用標(biāo)識AppID。
[0092]服務(wù)器端向服務(wù)提供平臺為應(yīng)用標(biāo)識AppID申請私有密鑰APPKEY后,可以自行維護(hù)保管應(yīng)用標(biāo)識AppID與相應(yīng)的私有密鑰APPKEY。服務(wù)器端根據(jù)客戶端發(fā)送的請求消息中的應(yīng)用表示AppID獲取對應(yīng)的私有密鑰AppKey,然后圖3所示實施例中301~306的操作計算出第一接入密鑰AccessKey并返回給客戶端。客戶端在收到第一接入密鑰AccessKey后,執(zhí)行307~309的操作,最終生成HTTP請求,之后可以采取與服務(wù)器端直接向服務(wù)提供平臺進(jìn)行接口調(diào)用的過程一樣,向服務(wù)提供平臺請求相應(yīng)的服務(wù)。
[0093]圖4為本發(fā)明開放接口調(diào)用的認(rèn)證方法再一個實施例的流程圖。如圖4所示,與圖3所示實施例相應(yīng)地,在該實施例中,圖2所示實施例的操作203中,服務(wù)提供平臺利用預(yù)設(shè)加密算法對發(fā)送接口調(diào)用請求的UR1、應(yīng)用標(biāo)識對應(yīng)的私有密鑰與有效時間進(jìn)行加密,得到第二認(rèn)證數(shù)據(jù)的操作具體可以通過如下方式實現(xiàn):
[0094]401,獲取發(fā)送接口調(diào)用請求的URI中的相對地址部分與有效時間Service-Expires,該相對地址部分包括第二查詢字符串。
[0095]402,將第二查詢字符串按照預(yù)設(shè)字典順序重新排序,得到新的第二查詢字符串。
[0096]403,去除新的第二查詢`字符串中的分割符,得到新的第二字符串。
[0097]示例性地,分割符具體可以預(yù)先設(shè)定,包括但不限于以下雙引號“”中的符號之一:
UU 0U \ U /
?、&、 / O
[0098]404,以基于接口調(diào)用請求中應(yīng)用標(biāo)識AppID從預(yù)先分配的參數(shù)記錄中獲取到的私有密鑰APPKEY作為預(yù)設(shè)加密算法的密鑰,計算接口調(diào)用請求方發(fā)送的HTTP請求中攜帶的有效時間Service-Expires,得到第二字節(jié)流數(shù)組。
[0099]405,對第二字節(jié)流數(shù)組按照Base64編碼方式進(jìn)行編碼,得到第二接入密鑰AccessKey。
[0100]406,將第二接入密鑰AccessKey作為預(yù)設(shè)加密算法的密鑰計算新的第二字符串,得到第二消息認(rèn)證碼。
[0101]407,對第二消息認(rèn)證碼按照Base64編碼方式進(jìn)行編碼,得到第二認(rèn)證數(shù)據(jù)Service-Auth。
[0102]之后,便可以通過本發(fā)明上述圖2所示實施例流程中的操作204~206,由服務(wù)提供平臺對接口調(diào)用請求方進(jìn)行接口調(diào)用控制。
[0103]圖5為本發(fā)明開放接口調(diào)用的認(rèn)證系統(tǒng)一個實施例的結(jié)構(gòu)示意圖。該實施例的開放接口調(diào)用的認(rèn)證系統(tǒng)可用于實現(xiàn)本發(fā)明上述各開放接口調(diào)用的認(rèn)證方法實施例的流程。如圖5所示,其包括服務(wù)提供平臺I與接口調(diào)用請求方,該接口調(diào)用請求方包括具有緊耦合關(guān)系的服務(wù)器端2或客戶端3。服務(wù)器端2與客戶端3具有緊耦合關(guān)系,一般為C/S結(jié)構(gòu),可以定義自己的內(nèi)容通信協(xié)議。
[0104]其中,接口調(diào)用請求方,用于向服務(wù)提供平臺I發(fā)送應(yīng)用程序的接口調(diào)用請求,該接口調(diào)用請求中包括接口調(diào)用參數(shù),接口調(diào)用參數(shù)包括唯一標(biāo)識一個應(yīng)用程序的應(yīng)用標(biāo)識、服務(wù)提供平臺I為該應(yīng)用程序分配的私有密鑰與服務(wù)器端為本次接口調(diào)用分配的有效時間。
[0105]其中,私有密鑰由服務(wù)器端2在服務(wù)提供平臺I注冊后由服務(wù)提供平臺I為該應(yīng)用程序分配,客戶端3在登錄服務(wù)器端2并獲得服務(wù)器端2授權(quán)后從服務(wù)器端2獲取該接口調(diào)用參數(shù)。
[0106]服務(wù)提供平臺1,用于接收接口調(diào)用請求方發(fā)送的應(yīng)用程序的接口調(diào)用請求;從預(yù)先分配的參數(shù)記錄中獲取接口調(diào)用請求中應(yīng)用標(biāo)識對應(yīng)的接口調(diào)用參數(shù),并基于該獲取到的私有密鑰與接口調(diào)用請求中的有效時間對接口調(diào)用請求進(jìn)行認(rèn)證;響應(yīng)于接口調(diào)用請求通過認(rèn)證,允許接口調(diào)用請求方進(jìn)行相應(yīng)的接口調(diào)用;否則,響應(yīng)于接口調(diào)用請求未通過認(rèn)證,拒絕接口調(diào)用請求方進(jìn)行相應(yīng)的接口調(diào)用。
[0107]本發(fā)明上述實施例提供的開放接口調(diào)用的認(rèn)證系統(tǒng),服務(wù)器端在服務(wù)提供平臺注冊后服務(wù)提供平臺可以為應(yīng)用程序分配接口調(diào)用參數(shù),客戶端在登錄服務(wù)器端并獲得服務(wù)器端授權(quán)后從服務(wù)器端獲取該接口調(diào)用參數(shù),客戶端或服務(wù)器端向服務(wù)提供平臺請求接口調(diào)用時,向服務(wù)提供平臺發(fā)送接口調(diào)用請求,提供應(yīng)用標(biāo)識、私有密鑰與服務(wù)器端為本次接口調(diào)用分配的有效時間,服務(wù)提供平臺從預(yù)先分配的參數(shù)記錄中獲取接口調(diào)用請求中應(yīng)用標(biāo)識對應(yīng)的私有密鑰,并基于該該獲取到的私有密鑰與接口調(diào)用請求中的有效時間對接口調(diào)用請求進(jìn)行認(rèn)證,只有在接口調(diào)用請求通過認(rèn)證時,服務(wù)提供平臺才允許客戶端進(jìn)行相應(yīng)的接口調(diào)用,否則,服務(wù)提供平臺拒絕客戶端進(jìn)行相應(yīng)的接口調(diào)用。由于客戶端只有在登錄服務(wù)器端并獲得服務(wù)器端授權(quán)后才能從服務(wù)器端獲取進(jìn)行接口調(diào)用所需的接口調(diào)用參數(shù),包括私有密鑰與有效時間,從而通過服務(wù)提供平臺的認(rèn)證后獲得對所請求服務(wù)的響應(yīng),為服務(wù)端提供了對客戶端接口調(diào)用的一定程度管控,提高了接口調(diào)用的安全性;另外,客戶端只有在登錄服務(wù)器端并獲得服務(wù)器端授權(quán)后才能從服務(wù)器端獲取進(jìn)行接口調(diào)用所需的接口調(diào)用參數(shù)后,即可獨立地向服務(wù)提供平臺進(jìn)行接口調(diào)用,無需由服務(wù)器端全權(quán)代理客戶端每次向服務(wù)提供平臺發(fā)送接口調(diào)用請求,再將獲得的內(nèi)容轉(zhuǎn)交給客戶端,為客戶端提供了一種相對獨立的接口調(diào)用過程,接口調(diào)用流程中認(rèn)證流程簡單有效,接口調(diào)用效率較高,客戶端在接口調(diào)用的過程中不增加服務(wù)器的工作負(fù)荷。本發(fā)明可以適用于任意具有服務(wù)端/客戶端結(jié)構(gòu)且具有緊耦合關(guān)系的互聯(lián)網(wǎng)應(yīng)用程序調(diào)用的場景。
[0108]根據(jù)本發(fā)明開放接口調(diào)用的認(rèn)證系統(tǒng)的一個具體示例而非限制,服務(wù)提供平臺I具體接收接口調(diào)用請求方通過統(tǒng)一資源標(biāo)識符URI發(fā)送的應(yīng)用程序的接口調(diào)用請求。相應(yīng)地,接口調(diào)用參數(shù)還包括URI。接口調(diào)用請求中包括接口調(diào)用參數(shù)具體為:接口調(diào)用請求中包括應(yīng)用標(biāo)識、有效時間與第一認(rèn)證數(shù)據(jù),該第一認(rèn)證數(shù)據(jù)由服務(wù)器端2利用預(yù)設(shè)加密算法對發(fā)送接口調(diào)用請求的UR1、服務(wù)提供平臺為該應(yīng)用程序分配的私有密鑰APPKEY與服務(wù)器端為本次接口調(diào)用分配的有效時間Service-Expires進(jìn)行加密得到。
[0109]示例性地,服務(wù)提供平臺I從預(yù)先分配的參數(shù)記錄中接口調(diào)用請求中應(yīng)用標(biāo)識對應(yīng)的私有密鑰,并基于該獲取到的私有密鑰對接口調(diào)用請求進(jìn)行認(rèn)證時,具體可以從預(yù)先分配的參數(shù)記錄中獲取接口調(diào)用請求中應(yīng)用標(biāo)識對應(yīng)的私有密鑰;利用預(yù)設(shè)加密算法對發(fā)送接口調(diào)用請求的UR1、獲取到的私有密鑰與有效時間進(jìn)行加密,得到第二認(rèn)證數(shù)據(jù);識別第一認(rèn)證數(shù)據(jù)與第二認(rèn)證數(shù)據(jù)是否一致,以及當(dāng)前時刻是否在有效時間內(nèi);若第一認(rèn)證數(shù)據(jù)與第二認(rèn)證數(shù)據(jù)一致,且當(dāng)前時刻在有效時間內(nèi),則確認(rèn)接口調(diào)用請求通過認(rèn)證;否則,若第一認(rèn)證數(shù)據(jù)與第二認(rèn)證數(shù)據(jù)不一致,和/或當(dāng)前時刻不在有效時間內(nèi),則確定接口調(diào)用請求未通過認(rèn)證。
[0110]示例性地,其中的預(yù)設(shè)加密算法具體可以包括但不限于摘要生成算法HMAC_SHA1。
[0111]根據(jù)本發(fā)明開放接口調(diào)用的認(rèn)證系統(tǒng)的一個具體示例而非限制,接口調(diào)用請求方發(fā)送的接口調(diào)用請求為基于HTTP的HTTP請求。該接口調(diào)用請求中包括應(yīng)用標(biāo)識、有效時間與第一認(rèn)證數(shù)據(jù)具體為=HTTP請求的報文頭部包括應(yīng)用標(biāo)識、有效時間與第一認(rèn)證數(shù)據(jù)。
[0112]示例性地,接口調(diào)用請求方還用于生成HTTP請求。
[0113]根據(jù)本發(fā)明開放接口調(diào)用的認(rèn)證系統(tǒng)的一個具體示例而非限制,接口調(diào)用請求方為服務(wù)器端2。服務(wù)器端2生成HTTP請求時,具體可以通過以下方式:
[0114]獲取基于HTTP發(fā)送應(yīng)用程序的接口調(diào)用請求的URI ;獲取URI中的相對地址部分,該相對地址部分包括第一查詢字符串;將第一查詢字符串按照預(yù)設(shè)字典順序重新排序,得到新的第一查詢字符串;去除新的第一查詢字符串中的分割符,得到新的第一字符串;以服務(wù)提供平臺I為應(yīng)用程序分配的私有密鑰作為預(yù)設(shè)加密算法的密鑰計算服務(wù)提供平臺I為應(yīng)用程序分配的有效時間,得到第一字節(jié)流數(shù)組;對第一字節(jié)流數(shù)組按照Base64編碼方式進(jìn)行編碼,得到第一接入密鑰;將第一接入密鑰作為預(yù)設(shè)加密算法的密鑰計算新的第一字符串,得到第一消息認(rèn)證碼;對第一消息認(rèn)證碼按照Base64編碼方式進(jìn)行編碼,得到第一認(rèn)證數(shù)據(jù);將應(yīng)用標(biāo)識、第一認(rèn)證數(shù)據(jù)與服務(wù)器端2為本次接口調(diào)用分配的有效時間加入到基于HTTP發(fā)送應(yīng)用程序的接口調(diào)用請求的HTTP報文的頭部,得到HTTP請求。
[0115]與上述具體示例中服務(wù)器端2生成HTTP請求相應(yīng)地,服務(wù)提供平臺I利用預(yù)設(shè)加密算法對發(fā)送接口調(diào)用請求的UR1、獲取到的私有密鑰與服務(wù)器端2為本次接口調(diào)用分配的有效時間進(jìn)行加密,得到第二認(rèn)證數(shù)據(jù)時,具體可以通過如下方式:
[0116]獲取發(fā)送接口調(diào)用請求的URI中的相對地址部分與有效時間,該相對地址部分包括第二查詢字符串;將第二查詢字符串按照預(yù)設(shè)字典順序重新排序,得到新的第二查詢字符串;去除新的第二查詢字符串中的分割符,得到新的第二字符串;以基于接口調(diào)用請求中應(yīng)用標(biāo)識獲取到的私有密鑰作為預(yù)設(shè)加密算法的密鑰計算HTTP請求中攜帶的有效時間,得到第二字節(jié)流數(shù)組;對第二字節(jié)流數(shù)組按照Base64編碼方式進(jìn)行編碼,得到第二接入密鑰;將第二接入密鑰作為預(yù)設(shè)加密算法的密鑰計算新的第二字符串,得到第二消息認(rèn)證碼;對第二消息認(rèn)證碼按照Base64編碼方式進(jìn)行編碼,得到第二認(rèn)證數(shù)。
[0117]示例性地,上述分割符具體可以預(yù)先設(shè)定,包括但不限于以下雙引號“”中的符號之一:“.“/”。
[0118]根據(jù)本發(fā)明開放接口調(diào)用的認(rèn)證系統(tǒng)的另一個具體示例而非限制,接口調(diào)用請求方具體為客戶端3。相應(yīng)地,客戶端3,還用于在生成HTTP請求之前登錄服務(wù)器端2,基于HTTP向服務(wù)器端2發(fā)送接口調(diào)用的請求消息,該請求消息中包括應(yīng)用標(biāo)識;以及在接收到服務(wù)器端2發(fā)送的第一接入密鑰時,開始執(zhí)行將第一接入密鑰作為預(yù)設(shè)加密算法的密鑰計算新的第一字符串的操作,得到HTTP請求。[0119]服務(wù)器端2,還用于在接收到客戶端3發(fā)送的應(yīng)用程序的接口調(diào)用請求時,開始執(zhí)行獲取基于HTTP發(fā)送應(yīng)用程序的接口調(diào)用請求的URI的操作,并在得到第一接入密鑰后將該第一接入密鑰與為本次接口調(diào)用分配的接入密鑰發(fā)送給客戶端3。
[0120]本說明書中各個實施例均采用遞進(jìn)的方式描述,每個實施例重點說明的都是與其它實施例的不同之處,各個實施例之間相同或相似的部分相互參見即可。對于系統(tǒng)實施例而言,由于其與方法實施例基本相似,所以描述的比較簡單,相關(guān)之處參見方法實施例的部分說明即可。
[0121]可能以許多方式來實現(xiàn)本發(fā)明的方法和系統(tǒng)。例如,可通過軟件、硬件、固件或者軟件、硬件、固件的任何組合來實現(xiàn)本發(fā)明的方法和系統(tǒng)。用于所述方法的步驟的上述順序僅是為了進(jìn)行說明,本發(fā)明的方法的步驟不限于以上具體描述的順序,除非以其它方式特別說明。此外,在一些實施例中,還可將本發(fā)明實施為記錄在記錄介質(zhì)中的程序,這些程序包括用于實現(xiàn)根據(jù)本發(fā)明的方法的機(jī)器可讀指令。因而,本發(fā)明還覆蓋存儲用于執(zhí)行根據(jù)本發(fā)明的方法的程序的記錄介質(zhì)。
[0122]本領(lǐng)域普通技術(shù)人員可以理解:實現(xiàn)上述方法實施例的全部或部分步驟可以通過程序指令相關(guān)的硬件來完成,前述的程序可以存儲于一計算機(jī)可讀取存儲介質(zhì)中,該程序在執(zhí)行時,執(zhí)行包括上述方法實施例的步驟;而前述的存儲介質(zhì)包括:R0M、RAM、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。
[0123]本發(fā)明實施例中,客戶端只有在登錄服務(wù)器端并獲得服務(wù)器端授權(quán)后才能從服務(wù)器端獲取進(jìn)行接口調(diào)用所需的接口調(diào)用參數(shù),從而通過服務(wù)提供平臺的認(rèn)證后獲得對所請求服務(wù)的響應(yīng),為服務(wù)端提供了對客戶端接口調(diào)用的一定程度管控,提高了接口調(diào)用的安全性;另外,客戶端只有在登錄服務(wù)器端并獲得服務(wù)器端授權(quán)后才能從服務(wù)器端獲取進(jìn)行接口調(diào)用所需的接口調(diào)用參數(shù)后,即可獨立地向服務(wù)提供平臺進(jìn)行接口調(diào)用,無需由服務(wù)器端全權(quán)代理客戶端每次向服務(wù)提供平臺發(fā)送接口調(diào)用請求,再將獲得的內(nèi)容轉(zhuǎn)交給客戶端,為客戶端提供了一種相對獨立的接口調(diào)用過程,接口調(diào)用流程中認(rèn)證流程簡單有效,接口調(diào)用效率較高,客戶端在接口調(diào)用的過程中不增加服務(wù)器的工作負(fù)荷。本發(fā)明可以適用于任意具有服務(wù)端/客戶端結(jié)構(gòu)且具有緊耦合關(guān)系的互聯(lián)網(wǎng)應(yīng)用程序調(diào)用的場景。
[0124]本發(fā)明的描述是為了示例和描述起見而給出的,而并不是無遺漏的或者將本發(fā)明限于所公開的形式。很多修改和變化對于本領(lǐng)域的普通技術(shù)人員而言是顯然的。選擇和描述實施例是為了更好說明本發(fā)明的原理和實際應(yīng)用,并且使本領(lǐng)域的普通技術(shù)人員能夠理解本發(fā)明從而設(shè)計適于特定用途的帶有各種修改的各種實施例。
【權(quán)利要求】
1.一種開放接口調(diào)用的認(rèn)證方法,其特征在于,包括: 服務(wù)提供平臺接收接口調(diào)用請求方發(fā)送的應(yīng)用程序的接口調(diào)用請求,所述接口調(diào)用請求中包括接口調(diào)用參數(shù);所述接口調(diào)用請求方包括具有緊耦合關(guān)系的服務(wù)器端或客戶端;所述接口調(diào)用參數(shù)包括唯一標(biāo)識一個應(yīng)用程序的應(yīng)用標(biāo)識、服務(wù)提供平臺為所述應(yīng)用程序分配的私有密鑰與服務(wù)器端為本次接口調(diào)用分配的有效時間;所述私有密鑰由服務(wù)器端在所述服務(wù)提供平臺注冊后由服務(wù)提供平臺為所述應(yīng)用程序分配,所述客戶端在登錄服務(wù)器端并獲得所述服務(wù)器端授權(quán)后從所述服務(wù)器端獲取所述接口調(diào)用參數(shù); 所述服務(wù)提供平臺從預(yù)先分配的參數(shù)記錄中獲取所述應(yīng)用標(biāo)識對應(yīng)的私有密鑰,并基于獲取到的私有密鑰與所述有效時間對所述接口調(diào)用請求進(jìn)行認(rèn)證; 響應(yīng)于所述接口調(diào)用請求通過認(rèn)證,所述服務(wù)提供平臺允許所述接口調(diào)用請求方進(jìn)行相應(yīng)的接口調(diào)用; 否則,響應(yīng)于所述接口調(diào)用請求未通過認(rèn)證,所述服務(wù)提供平臺拒絕所述接口調(diào)用請求方進(jìn)行相應(yīng)的接口調(diào)用。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,服務(wù)提供平臺具體接收接口調(diào)用請求方通過統(tǒng)一資源標(biāo)識符URI發(fā)送的應(yīng)用程序的接口調(diào)用請求; 所述接口調(diào)用參數(shù)還包括所述URI ; 所述接口調(diào)用請求中包括接口調(diào)用參數(shù)具體為:所述接口調(diào)用請求中包括所述應(yīng)用標(biāo)識、有效時間與第一認(rèn) 證數(shù)據(jù),所述第一認(rèn)證數(shù)據(jù)由所述服務(wù)器端利用預(yù)設(shè)加密算法對所述UR1、所述私有密鑰與所述有效時間進(jìn)行加密得到。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述服務(wù)提供平臺從預(yù)先分配的參數(shù)記錄中獲取所述應(yīng)用標(biāo)識對應(yīng)的私有密鑰,并基于獲取到的私有密鑰與所述有效時間對所述接口調(diào)用請求進(jìn)行認(rèn)證包括: 所述服務(wù)提供平臺從預(yù)先分配的參數(shù)記錄中獲取所述應(yīng)用標(biāo)識對應(yīng)的私有密鑰; 所述服務(wù)提供平臺利用所述預(yù)設(shè)加密算法對發(fā)送所述接口調(diào)用請求的UR1、獲取到的私有密鑰與所述有效時間進(jìn)行加密,得到第二認(rèn)證數(shù)據(jù); 所述服務(wù)提供平臺識別所述第一認(rèn)證數(shù)據(jù)與所述第二認(rèn)證數(shù)據(jù)是否一致,以及當(dāng)前時刻是否在所述有效時間內(nèi); 若第一認(rèn)證數(shù)據(jù)與所述第二認(rèn)證數(shù)據(jù)一致,且當(dāng)前時刻在所述有效時間內(nèi),則所述接口調(diào)用請求通過認(rèn)證; 否則,若第一認(rèn)證數(shù)據(jù)與所述第二認(rèn)證數(shù)據(jù)不一致,和/或當(dāng)前時刻不在所述有效時間內(nèi),則所述接口調(diào)用請求未通過認(rèn)證。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述預(yù)設(shè)加密算法包括摘要生成算法HMAC_SHA10
5.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述接口調(diào)用請求為基于超文本傳輸協(xié)議HTTP的HTTP請求; 所述接口調(diào)用請求中包括所述應(yīng)用標(biāo)識、有效時間與第一認(rèn)證數(shù)據(jù)具體為:所述HTTP請求的報文頭部包括所述應(yīng)用標(biāo)識、有效時間與第一認(rèn)證數(shù)據(jù)。
6.根據(jù)權(quán)利要求5所述的方法,其特征在于,服務(wù)提供平臺接收接口調(diào)用請求方發(fā)送的應(yīng)用程序的接口調(diào)用請求之前,還包括接口調(diào)用請求方生成所述HTTP請求的操作。
7.根據(jù)權(quán)利要求6所述的方法,其特征在于,生成所述HTTP請求具體包括: 獲取基于HTTP發(fā)送應(yīng)用程序的接口調(diào)用請求的URI ; 獲取所述URI中的相對地址部分,所述相對地址部分包括第一查詢字符串; 將所述第一查詢字符串按照預(yù)設(shè)字典順序重新排序,得到新的第一查詢字符串; 去除新的第一查詢字符串中的分割符,得到新的第一字符串; 以所述服務(wù)提供平臺為所述應(yīng)用程序分配的私有密鑰作為預(yù)設(shè)加密算法的密鑰計算服務(wù)提供平臺為所述應(yīng)用程序分配的有效時間,得到第一字節(jié)流數(shù)組; 對所述第一字節(jié)流數(shù)組按照內(nèi)容傳輸編碼Base64編碼方式進(jìn)行編碼,得到第一接入密鑰; 將所述第一接入密鑰作為預(yù)設(shè)加密算法的密鑰計算所述新的第一字符串,得到第一消息認(rèn)證碼; 對所述第一消息認(rèn)證碼按照Base64編碼方式進(jìn)行編碼,得到第一認(rèn)證數(shù)據(jù); 將所述應(yīng)用標(biāo)識、所述第一認(rèn)證數(shù)據(jù)與服務(wù)器端為本次接口調(diào)用分配的有效時間加入到基于HTTP發(fā)送應(yīng)用程序的接口調(diào)用請求的HTTP報文的頭部,得到所述HTTP請求。
8.根據(jù)權(quán)利要求7所述的方法,其特征在于,所述服務(wù)提供平臺利用所述預(yù)設(shè)加密算法對發(fā)送所述接口調(diào)用請求的UR1、獲取到的私有密鑰與所述有效時間進(jìn)行加密,得到第二認(rèn)證數(shù)據(jù)具體包括: 獲取發(fā)送所述接口調(diào)用請求的URI中的相對地址部分與有效時間,所述相對地址部分包括第二查詢字符串; 將所述第二查詢字符串按照預(yù)設(shè)字典順序重新排序,得到新的第二查詢字符串; 去除新的第二查詢字符串中的分割符,得到新的第二字符串; 以獲取到的私有密鑰作為預(yù)設(shè)加密算法的密鑰計算所述HTTP請求中攜帶的有效時間,得到第二字節(jié)流數(shù)組; 對所述第二字節(jié)流數(shù)組按照Base64編碼方式進(jìn)行編碼,得到第二接入密鑰; 將所述第二接入密鑰作為預(yù)設(shè)加密算法的密鑰計算所述新的第二字符串,得到第二消息認(rèn)證碼; 對所述第二消息認(rèn)證碼按照Base64編碼方式進(jìn)行編碼,得到第二認(rèn)證數(shù)。
9.根據(jù)權(quán)利要求8所述的方法,其特征在于,所述接口調(diào)用請求方為客戶端時,生成所述HTTP請求之前還包括: 所述客戶端登錄服務(wù)器端,基于HTTP向所述服務(wù)器端發(fā)送接口調(diào)用的請求消息,所述請求消息中包括所述應(yīng)用標(biāo)識; 所述服務(wù)器端開 始執(zhí)行所述獲取基于HTTP發(fā)送應(yīng)用程序的接口調(diào)用請求的URI的操作,并在得到第一接入密鑰后將所述第一接入密鑰與為本次接口調(diào)用分配的有效時間發(fā)送給所述客戶端; 所述客戶端開始執(zhí)行所述將所述第一接入密鑰作為預(yù)設(shè)加密算法的密鑰計算所述新的第一字符串的操作,得到所述HTTP請求。
10.根據(jù)權(quán)利要求7、8或9所述的方法,其特征在于,所述分割符包括以下雙引號“”中的符號之一“/”。
11.一種開放接口調(diào)用的認(rèn)證系統(tǒng),包括服務(wù)提供平臺與接口調(diào)用請求方,所述接口調(diào)用請求方包括具有緊耦合關(guān)系的服務(wù)器端或客戶端;其特征在于,所述接口調(diào)用請求方,用于向所述服務(wù)提供平臺發(fā)送應(yīng)用程序的接口調(diào)用請求,所述接口調(diào)用請求中包括接口調(diào)用參數(shù),所述接口調(diào)用參數(shù)包括唯一標(biāo)識一個應(yīng)用程序的應(yīng)用標(biāo)識、服務(wù)提供平臺為所述應(yīng)用程序分配的私有密鑰與服務(wù)器端為本次接口調(diào)用分配的有效時間;所述私有密鑰由服務(wù)器端在所述服務(wù)提供平臺注冊后由服務(wù)提供平臺為所述應(yīng)用程序分配,所述客戶端在登錄服務(wù)器端并獲得所述服務(wù)器端授權(quán)后從所述服務(wù)器端獲取所述接口調(diào)用參數(shù); 所述服務(wù)提供平臺,用于接收接口調(diào)用請求方發(fā)送的應(yīng)用程序的接口調(diào)用請求;從預(yù)先分配的參數(shù)記錄中獲取所述應(yīng)用標(biāo)識對應(yīng)的私有密鑰,并基于獲取到的私有密鑰與所述有效時間對所述接口調(diào)用請求進(jìn)行認(rèn)證;響應(yīng)于所述接口調(diào)用請求通過認(rèn)證,允許所述接口調(diào)用請求方進(jìn)行相應(yīng)的接口調(diào)用;否則,響應(yīng)于所述接口調(diào)用請求未通過認(rèn)證,拒絕所述接口調(diào)用請求方進(jìn)行相應(yīng)的接口調(diào)用。
12.根據(jù)權(quán)利要求11所述的系統(tǒng),其特征在于,所述服務(wù)提供平臺具體接收接口調(diào)用請求方通過統(tǒng)一資源標(biāo)識符URI發(fā)送的應(yīng)用程序的接口調(diào)用請求; 所述接口調(diào)用參數(shù)還包括所述URI ; 所述接口調(diào)用請求中包括接口調(diào)用參數(shù)具體為:所述接口調(diào)用請求中包括所述應(yīng)用標(biāo)識、有效時間與第一認(rèn)證數(shù)據(jù),所述第一認(rèn)證數(shù)據(jù)由所述服務(wù)器端利用預(yù)設(shè)加密算法對所述UR1、所述私有密鑰與所述有效時間進(jìn)行加密得到。
13.根據(jù)權(quán)利要求12所述的系統(tǒng),其特征在于,所述服務(wù)提供平臺從預(yù)先分配的參數(shù)記錄中獲取所述應(yīng)用標(biāo)識對應(yīng)的私有密鑰,并基于獲取到的私有密鑰與所述有效時間對所述接口調(diào)用請求進(jìn)行認(rèn)證時,具體從預(yù)先分配的參數(shù)記錄中獲取所述應(yīng)用標(biāo)識對應(yīng)的私有密鑰;利用所述預(yù)設(shè)加密算法對發(fā)送所述接口調(diào)用請求的UR1、獲取到的私有密鑰與所述有效時間進(jìn)行加密,得到第二認(rèn)證數(shù)據(jù);識別所述第一認(rèn)證數(shù)據(jù)與所述第二認(rèn)證數(shù)據(jù)是否一致,以及當(dāng)前時刻是否在所述有效時間內(nèi);若第一認(rèn)證數(shù)據(jù)與所述第二認(rèn)證數(shù)據(jù)一致,且當(dāng)前時刻在所述有效時間內(nèi),則確認(rèn)所述接口調(diào)用請求通過認(rèn)證;否則,若第一認(rèn)證數(shù)據(jù)與所述第二認(rèn)證數(shù)據(jù)不一致,和/或當(dāng)前時刻不在所述有效時間內(nèi),則確定所述接口調(diào)用請求未通過認(rèn)證。
14.根據(jù)權(quán)利要求13所述的系統(tǒng),其特征在于,所述預(yù)設(shè)加密算法包括摘要生成算法HMAC_SHA10
15.根據(jù)權(quán)利要求13所述的系統(tǒng),其特征在于,所述接口調(diào)用請求為基于超文本傳輸協(xié)議HTTP的HTTP請求; 所述接口調(diào)用請求中包括所述應(yīng)用標(biāo)識、有效時間與第一認(rèn)證數(shù)據(jù)具體為:所述HTTP請求的報文頭部包括所述應(yīng)用標(biāo)識、有效時間與第一認(rèn)證數(shù)據(jù)。
16.根據(jù)權(quán)利要求15所述的系統(tǒng),其特征在于,所述接口調(diào)用請求方還用于生成所述HTTP請求。
17.根據(jù)權(quán)利要求16所述的系統(tǒng),其特征在于,所述接口調(diào)用請求方為服務(wù)器端; 所述服務(wù)器端生成所述HTTP請求時,具體獲取基于HTTP發(fā)送應(yīng)用程序的接口調(diào)用請求的URI ;獲取所述URI中的相對地址部分,所述相對地址部分包括第一查詢字符串;將所述第一查詢字符串按照預(yù)設(shè)字典順序重新排序,得到新的第一查詢字符串;去除新的第一查詢字符串中的分割符,得到新的第一字符串;以所述服務(wù)提供平臺為所述應(yīng)用程序分配的私有密鑰作為預(yù)設(shè)加密算法的密鑰計算服務(wù)提供平臺為所述應(yīng)用程序分配的有效時間,得到第一字節(jié)流數(shù)組;對所述第一字節(jié)流數(shù)組按照內(nèi)容傳輸編碼Base64編碼方式進(jìn)行編碼,得到第一接入密鑰;將所述第一接入密鑰作為預(yù)設(shè)加密算法的密鑰計算所述新的第一字符串,得到第一消息認(rèn)證碼;對所述第一消息認(rèn)證碼按照Base64編碼方式進(jìn)行編碼,得到第一認(rèn)證數(shù)據(jù);將所述應(yīng)用標(biāo)識、所述第一認(rèn)證數(shù)據(jù)與服務(wù)器端為本次接口調(diào)用分配的有效時間加入到基于HTTP發(fā)送應(yīng)用程序的接口調(diào)用請求的HTTP報文的頭部,得到所述HTTP請求。
18.根據(jù)權(quán)利要求17所述的系統(tǒng),其特征在于,所述服務(wù)提供平臺利用所述預(yù)設(shè)加密算法對發(fā)送所述接口調(diào)用請求的UR1、獲取到的私有密鑰與所述有效時間進(jìn)行加密,得到第二認(rèn)證數(shù)據(jù)時,具體獲取發(fā)送所述接口調(diào)用請求的URI中的相對地址部分與有效時間,所述相對地址部分包括第二查詢字符串;將所述第二查詢字符串按照預(yù)設(shè)字典順序重新排序,得到新的第二查詢字符串;去除新的第二查詢字符串中的分割符,得到新的第二字符串;以獲取到的私有密鑰作為預(yù)設(shè)加密算法的密鑰計算所述HTTP請求中攜帶的有效時間,得到第二字節(jié)流數(shù)組;對所述第二字節(jié)流數(shù)組按照Base64編碼方式進(jìn)行編碼,得到第二接入密鑰;將所述第二接入密鑰作為預(yù)設(shè)加密算法的密鑰計算所述新的第二字符串,得到第二消息認(rèn)證碼;對所述第二消息認(rèn)證碼按照Base64編碼方式進(jìn)行編碼,得到第二認(rèn)證數(shù)。
19.根據(jù)權(quán)利要求18所述的系統(tǒng),其特征在于,所述接口調(diào)用請求方具體為客戶端; 所述客戶端,還用于在生成所述HTTP請求之前登錄服務(wù)器端,基于HTTP向所述服務(wù)器端發(fā)送接口調(diào)用的請求消息,所述請求消息中包括所述應(yīng)用標(biāo)識;以及在接收到服務(wù)器端發(fā)送的第一接入密鑰時,開始執(zhí)行所述將所述第一接入密鑰作為預(yù)設(shè)加密算法的密鑰計算所述新的第一字符串的操作,得到所述HTTP請求; 所述服務(wù)器端,還用于在接收到客戶端發(fā)送的應(yīng)用程序的接口調(diào)用請求時,開始執(zhí)行所述獲取基于HTTP發(fā)送應(yīng)用程序的接口調(diào)用請求的URI的操作,并在得到第一接入密鑰后將所述第一接入密鑰與為本次接口調(diào)用分配的接入密鑰發(fā)送給所述客戶端。
20.根據(jù)權(quán)利要求17、18或19所述的系統(tǒng),其特征在于,所述分割符包括以下雙引號“”中的符號之一“/”。
【文檔編號】H04L29/06GK103701761SQ201210366885
【公開日】2014年4月2日 申請日期:2012年9月28日 優(yōu)先權(quán)日:2012年9月28日
【發(fā)明者】翁頤, 蔣銘勛, 奚溪, 姚良, 仝建剛 申請人:中國電信股份有限公司