資源的請(qǐng)求。作為響應(yīng),在步驟S604利用授權(quán)服務(wù)器201對(duì)用戶身份進(jìn)行認(rèn)證。特別地,根據(jù)本發(fā)明的實(shí)施例,對(duì)用戶的認(rèn)證可以基于用戶、用戶設(shè)備、資源和/或其他任何可能的相關(guān)因素而被定制。
[0067]而且,在OAuth架構(gòu)下,在步驟S603和S604處還可以完成用戶對(duì)客戶端應(yīng)用203的授權(quán)。例如,用戶可以指定授權(quán)客戶端應(yīng)用203訪問的資源類型,等等。該授權(quán)可以是一個(gè)隱式過程,例如基于預(yù)定義配置。備選地,授權(quán)也可以被顯式地完成,例如基于網(wǎng)頁(yè)表單、語(yǔ)音、手勢(shì)輸入等用戶輸入。用戶對(duì)客戶端應(yīng)用203的授權(quán)信息將被存儲(chǔ)在授權(quán)服務(wù)器201可訪問的存儲(chǔ)位置,以便在生成訪問令牌時(shí)使用。
[0068]如果用戶通過認(rèn)證,則用戶代理204在步驟S605將授權(quán)服務(wù)器201生成的一個(gè)代碼轉(zhuǎn)發(fā)給客戶端應(yīng)用203??蛻舳藨?yīng)用203繼而在步驟S606向授權(quán)服務(wù)器201請(qǐng)求訪問令牌。特別地,根據(jù)本發(fā)明的實(shí)施例,在步驟S606處發(fā)送的請(qǐng)求不僅可以包括先前由第一設(shè)備201生成的代碼,而且可以包括特定于客戶端應(yīng)用的認(rèn)證信息,例如證書、簽名、加密數(shù)據(jù)段,等等。
[0069]響應(yīng)于該請(qǐng)求,授權(quán)服務(wù)器在步驟S607基于令牌請(qǐng)求中的認(rèn)證信息對(duì)客戶端應(yīng)用執(zhí)行定制的認(rèn)證。如果通過認(rèn)證,在步驟S608,利用授權(quán)服務(wù)器201生成并且定制訪問令牌。如上所述,根據(jù)本發(fā)明的實(shí)施例,定制的訪問令牌不僅可以指示訪問請(qǐng)求被允許,還可以具有一個(gè)或多個(gè)訪問約束以用于實(shí)現(xiàn)對(duì)資源訪問的更為全面和精細(xì)的控制。與訪問令牌相關(guān)聯(lián)的訪問約束可以被集成在訪問令牌中,也可以存儲(chǔ)在授權(quán)服務(wù)器201處或者任何授權(quán)服務(wù)器201可訪問的存儲(chǔ)設(shè)備中。此外,在OAuth架構(gòu)下,在步驟S604處存儲(chǔ)的用戶對(duì)于客戶端應(yīng)用203的授權(quán)信息也可以被轉(zhuǎn)換為相應(yīng)的約束,并且被包括在訪問令牌中。
[0070]定制的訪問令牌在步驟S609從授權(quán)服務(wù)器201被提供給客戶端應(yīng)用203??蛻舳藨?yīng)用203繼而使用訪問令牌在步驟S610從資源服務(wù)器202請(qǐng)求資源。響應(yīng)于該請(qǐng)求,在步驟S611,資源服務(wù)器202將定制的訪問令牌返回給授權(quán)服務(wù)器201,以驗(yàn)證訪問令牌的有效性。根據(jù)本發(fā)明的實(shí)施例,授權(quán)服務(wù)器201在步驟S612至少通過確定與訪問令牌相關(guān)聯(lián)的訪問約束是否得到滿足來驗(yàn)證訪問令牌是否有效。如上所述,在確定訪問約束是否滿足時(shí),可能需要訪問其他服務(wù),例如位置服務(wù)。
[0071]如果訪問令牌被驗(yàn)證為有效,則授權(quán)服務(wù)器201在步驟S613向資源分服務(wù)器202確認(rèn)令牌有效。作為響應(yīng),資源服務(wù)器202可以在步驟S614將所請(qǐng)求的資源返回給客戶端應(yīng)用203。
[0072]圖7示出了根據(jù)本發(fā)明實(shí)施例的用于控制資源訪問的裝置700的示意性框圖。如圖所示,根據(jù)本發(fā)明的實(shí)施例,裝置700包括:認(rèn)證單元701,被配置為響應(yīng)于針對(duì)資源的訪問的請(qǐng)求,利用第一設(shè)備確定是否授權(quán)對(duì)所述資源的所述訪問,所述資源由獨(dú)立于所述第一設(shè)備的第二設(shè)備提供;以及令牌定制單元702,被配置為利用關(guān)于所述訪問的訪問約束來定制訪問令牌,以用于控制對(duì)所述資源的所述訪問,所述訪問令牌響應(yīng)于確定授權(quán)對(duì)所述資源的所述訪問而被生成。
[0073]在某些實(shí)施例中,裝置700還可以包括訪問約束生成單元,其被配置為基于以下至少一個(gè)而生成所述訪問約束:在針對(duì)所述資源的所述訪問的所述請(qǐng)求中包括的關(guān)于所述訪問的要求;在針對(duì)所述訪問令牌的請(qǐng)求中包括的關(guān)于所述訪問的要求;以及事先存儲(chǔ)的關(guān)于所述訪問的預(yù)定義要求。
[0074]在某些實(shí)施例中,所述訪問約束包括以下至少一項(xiàng):關(guān)于所述訪問的時(shí)間約束;關(guān)于所述訪問的次數(shù)約束;以及關(guān)于所述訪問的位置約束。
[0075]在某些實(shí)施例中,裝置700還可以包括:令牌提供單元,被配置為提供所述訪問令牌,使得所述訪問令牌由所述第二設(shè)備獲得;令牌接收單元,被配置為從所述第二設(shè)備接收所述訪問令牌;以及令牌驗(yàn)證單元,被配置為至少部分地通過確定所述訪問約束是否被滿足,來驗(yàn)證所述訪問令牌的有效性。
[0076]在某些實(shí)施例中,所述令牌定制單元702可以包括:訪問約束集成單元,被配置為將所述訪問約束集成在所述訪問令牌中。備選地或附加地,在某些實(shí)施例中,所述令牌定制單元702可以包括:訪問約束存儲(chǔ)單元,被配置為將所述訪問約束與所述訪問令牌相關(guān)聯(lián)地存儲(chǔ)在所述第一設(shè)備可訪問的存儲(chǔ)設(shè)備中。
[0077]在某些實(shí)施例中,所述認(rèn)證單元701可以包括:用戶身份認(rèn)證單元,配置為基于關(guān)于以下至少一項(xiàng)的信息來認(rèn)證請(qǐng)求訪問所述資源的用戶的身份:所述用戶,所述用戶所使用的用戶設(shè)備,以及所述資源。備選地或附加地,在某些實(shí)施例中,所述認(rèn)證單元701可以包括:客戶端應(yīng)用認(rèn)證單元,被配置為至少部分地基于特定于請(qǐng)求對(duì)所述資源的所述訪問的用戶所使用的客戶端應(yīng)用的認(rèn)證信息來認(rèn)證所述客戶端應(yīng)用,所述認(rèn)證信息由所述客戶端應(yīng)用基于預(yù)定協(xié)議添加到針對(duì)所述訪問令牌的請(qǐng)求中。
[0078]在某些實(shí)施例中,所述第一設(shè)備是OAuth架構(gòu)中的授權(quán)服務(wù)器,并且其中所述第二設(shè)備是所述OAuth架構(gòu)中的資源服務(wù)器。
[0079]應(yīng)當(dāng)注意,為清晰起見,圖7中沒有示出裝置700所包括的可選單元或者子單元。上文所描述的所有特征和操作分別適用于裝置700,故在此不再贅述。而且,裝置700中的單元或子單元的劃分不是限制性的而是示例性的,旨在從邏輯上描述其主要功能或操作。一個(gè)單元的功能可以由多個(gè)單元來實(shí)現(xiàn);反之,多個(gè)單元亦可由一個(gè)單元來實(shí)現(xiàn)。本發(fā)明的范圍在此方面不受限制。
[0080]而且,裝置700所包含的單元可以利用各種方式來實(shí)現(xiàn),包括軟件、硬件、固件或其任意組合。例如,在某些實(shí)施方式中,裝置700可以利用軟件和/或固件來實(shí)現(xiàn)。備選地或附加地,裝置700可以部分地或者完全地基于硬件來實(shí)現(xiàn)。例如,裝置700中的一個(gè)或多個(gè)單元可以實(shí)現(xiàn)為集成電路(IC)芯片、專用集成電路(ASIC)、片上系統(tǒng)(SOC)、現(xiàn)場(chǎng)可編程門陣列(FPGA),等等。本發(fā)明的范圍在此方面不受限制。特別地,在某些實(shí)施例中,裝置700可以實(shí)現(xiàn)為部署在第一設(shè)備201處的插件,作為第一設(shè)備201—部分的部件,或者以其他方式與第一設(shè)備201協(xié)同工作的獨(dú)立裝置。
[0081]本發(fā)明可以是系統(tǒng)、方法和/或計(jì)算機(jī)程序產(chǎn)品。計(jì)算機(jī)程序產(chǎn)品可以包括計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其上載有用于使處理器實(shí)現(xiàn)本發(fā)明的各個(gè)方面的計(jì)算機(jī)可讀程序指令。
[0082]計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)可以是可以保持和存儲(chǔ)由指令執(zhí)行設(shè)備使用的指令的有形設(shè)備。計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)例如可以是一但不限于一電存儲(chǔ)設(shè)備、磁存儲(chǔ)設(shè)備、光存儲(chǔ)設(shè)備、電磁存儲(chǔ)設(shè)備、半導(dǎo)體存儲(chǔ)設(shè)備或者上述的任意合適的組合。計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)的更具體的例子(非窮舉的列表)包括:便攜式計(jì)算機(jī)盤、硬盤、隨機(jī)存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)、可擦式可編程只讀存儲(chǔ)器(EPR0M或閃存)、靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)、便攜式壓縮盤只讀存儲(chǔ)器(⑶-ROM)、數(shù)字多功能盤(DVD)、記憶棒、軟盤、機(jī)械編碼設(shè)備、例如其上存儲(chǔ)有指令的打孔卡或凹槽內(nèi)凸起結(jié)構(gòu)、以及上述的任意合適的組合。這里所使用的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)不被解釋為瞬時(shí)信號(hào)本身,諸如無線電波或者其他自由傳播的電磁波、通過波導(dǎo)或其他傳輸媒介傳播的電磁波(例如,通過光纖電纜的光脈沖)、或者通過電線傳輸?shù)碾娦盘?hào)。
[0083]這里所描述的計(jì)算機(jī)可讀程序指令可以從計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)下載到各個(gè)計(jì)算/處理設(shè)備,或者通過網(wǎng)絡(luò)、例如因特網(wǎng)、局域網(wǎng)、廣域網(wǎng)和/或無線網(wǎng)下載到外部計(jì)算機(jī)或外部存儲(chǔ)設(shè)備。網(wǎng)絡(luò)可以包括銅傳輸電纜、光纖傳輸、無線傳輸、路由器、防火墻、交換機(jī)、網(wǎng)關(guān)計(jì)算機(jī)和/或邊緣服務(wù)器。每個(gè)計(jì)算/處理設(shè)備中的網(wǎng)絡(luò)適配卡或者網(wǎng)絡(luò)接口從網(wǎng)絡(luò)接收計(jì)算機(jī)可讀程序指令,并轉(zhuǎn)發(fā)該計(jì)算機(jī)可讀程序指令,以供存儲(chǔ)在各個(gè)計(jì)算/處理設(shè)備中的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中。
[0084]用于執(zhí)行本發(fā)明操作的計(jì)算機(jī)程序指令可以是匯編指令、指令集架構(gòu)(ISA)指令、機(jī)器指令、機(jī)器相關(guān)指令、微代碼、固件指令、狀態(tài)設(shè)置數(shù)據(jù)、或者以一種或多種編程語(yǔ)言的任意組合編寫的源代碼或目標(biāo)代碼,所述編程語(yǔ)言包括面向?qū)ο蟮木幊陶Z(yǔ)言一諸如Java、Smalltalk、C++等,以及常規(guī)的過程式編程語(yǔ)目一諸如“C”語(yǔ)目或類似的編程語(yǔ)目。計(jì)算機(jī)可讀程序指令可以完全地在用戶計(jì)算機(jī)上執(zhí)行、部分地在用戶計(jì)算機(jī)上執(zhí)行、作為一個(gè)獨(dú)立的軟件包執(zhí)行、部分在用戶計(jì)算機(jī)上部分在遠(yuǎn)程計(jì)算機(jī)上執(zhí)行、或者完全