發(fā)明的實施例。根據(jù)本發(fā)明的示例實施例,訪問令牌不僅可被用來指示允許或者拒絕資源訪問請求,而且還可以利用一個或多個訪問約束而被定制。如下文所述,這樣的訪問約束可以基于用戶和/或資源的特性等各種因素生成,并且可以被事先或者動態(tài)地提供給認證和授權方。以此方式,可以借助于訪問令牌而實現(xiàn)對資源訪問的更精細粒度和更多維度的控制。而且,在某些實施例中,還可以實現(xiàn)對用戶和/或客戶端應用的定制認證。這種自適應的定制認證有利于進一步增強認證和授權的靈活性。
[0029]特別地,在下文描述中,可能借助于OAuth架構來討論本發(fā)明的若干示例性實施例。然而應當理解,這僅僅是出于討論和說明之目的,并非有意以任何方式限制本發(fā)明的范圍。相反,本發(fā)明的實施例可適用于任何由獨立于資源提供方的認證和授權方對資源訪問請求進行認證和授權的場景。
[0030]首先參考圖2,其示出了本發(fā)明的實施例可實現(xiàn)于其中的系統(tǒng)200的示意性框圖。如圖2所示,系統(tǒng)200包括用于負責認證和授權的計算設備/服務器201,以及負責提供資源的計算設備/服務器202。在本發(fā)明的上下文中,為討論方便起見,將設備201稱為“第一設備”,而將設備202稱為“第二設備”。
[0031 ] 在此使用的術語“資源”是指可被訪問和使用的任何類型的數(shù)據(jù)或信息,包括但不限于文本、圖像、多媒體、位置信息,等等。根據(jù)本發(fā)明的實施例,資源由第二設備202提供。在某些實施例中,資源的所有者可以將資源存儲在第二設備202處,使得資源由第二設備202托管和提供。備選地或附加地,第二設備202也可以從任何其他來源獲得資源。此后,用戶可以請求使用客戶端應用203 (例如,Web應用)訪問由第二設備202提供的資源。此時,客戶端應用203可以向負責認證和授權的第一設備201發(fā)送認證請求。在某些實施例中,客戶端應用203可以借助于用戶代理204(例如,Web瀏覽器)來發(fā)送該請求,但這并不是必須的。
[0032]響應于接收到認證請求,第一設備201可以對用戶身份進行認證,以確認他/她是否有權訪問所請求的資源。如果用戶通過認證,在某些實施例中,第一設備201還可以對用戶使用的客戶端應用203進行認證。如果客戶端認證也獲得通過,則第一設備201可以做出授權決策并且向客戶端應用提供訪問令牌。繼而,客戶端應用可以使用訪問令牌訪問由第二設備202提供的請求資源。如已知的,訪問令牌被用于控制對資源的訪問,它是客戶端應用203被許可獲得所請求資源的憑證。特別地,在某些實施例中,第二設備202可以在提供資源之前向第一設備201再次確認訪問令牌的有效性。
[0033]根據(jù)本發(fā)明的實施例,系統(tǒng)200中的各個設備可以借助于各種通信介質(zhì)彼此通信。例如,這樣的通信介質(zhì)包括但不限于計算機網(wǎng)絡,例如局域網(wǎng)(LAN)、廣域網(wǎng)(WAN)或者因特網(wǎng);電信網(wǎng)絡;近場通信網(wǎng)絡;或其任意組合。
[0034]下面現(xiàn)在參考圖3,其示出了根據(jù)本發(fā)明實施例的用于控制資源訪問的方法300的流程圖。根據(jù)本發(fā)明的實施例,方法300在負責認證和授權的第一設備(例如,圖1中所示的第一設備201)處執(zhí)行。例如,在某些實施例中,用于執(zhí)行方法300的主體可以是第一設備201本身或其部件,是被部署至第一設備201的插件(plug-1n),或者是獨立于第一設備201并且可與第一設備201協(xié)同工作的任何適當裝置。
[0035]如圖3所示,在方法300的步驟S301,響應于針對資源的訪問的請求,利用第一設備201確定是否授權對資源的訪問。
[0036]如上所述,當用戶例如試圖使用客戶端應用203訪問由第二設備202提供的資源時,可以產(chǎn)生向第一設備201認證請求。認證請求例如經(jīng)由用戶代理204發(fā)送給第一設備201。特別地,在本發(fā)明的某些實施例中,認證請求不僅可以指明待訪問的資源,而且還可以包含與資源訪問有關的要求或限制。這方面的實施例將在下文詳述。
[0037]響應于認證請求,第一設備201可以確認是否允許訪問所請求的資源。例如,在某些實施例中,在步驟S301處可以認證請求資源訪問的用戶的身份。例如,可以確認用戶是否是所請求資源的所有者。特別地,在某些實施例中,不同于已知的方案,在步驟S301處可以基于各種因素來定制對用戶身份的認證過程。
[0038]例如,在某些實施例中,可以基于用戶本人的信息來定制用戶身份認證。關于用戶的信息可以包括用戶的人口統(tǒng)計信息、工作簡檔、先前訪問資源的歷史、個人信用記錄,等等。作為示例,在某些實施例中,如果確定請求訪問資源的用戶先前曾經(jīng)存在過違反資源使用規(guī)定的記錄,則可以提升安全級別以便對該用戶進行更為嚴格的認證。
[0039]備選地或附加地,還可以基于用戶當前所使用的用戶設備的信息來定制用戶身份認證。用戶設備的信息例如可以包括但不限于:設備的類型、處理能力、網(wǎng)絡狀況、存儲容量、電池續(xù)航情況,等等。例如,在某些實施例中,如果確定用戶當前使用的是桌面型計算機之類的固定設備,則可以使用傳統(tǒng)的用戶界面元素(例如,對話框)要求用戶輸入用戶名、口令之類的信息以用于身份認證。反之,如果確定用戶當前使用的是智能電話、平臺式計算機、個人數(shù)字助理(PDA)之類的移動設備,則可以使用適合移動設備特點的認證方式來執(zhí)行認證過程。例如,如果確定用戶設備具有觸敏屏幕,則可以利用圖形化密碼、語音輸入、指紋識別、紅膜識別等方式來確認用戶的身份。
[0040]備選地或附加地,在某些實施例中,可以根據(jù)關于資源的信息來定制用戶身份認證。例如,不同的資源可以具有不同的安全級別。相應地,對于具有不同安全級別的資源,可以采用不同的技術來認證用戶的身份。例如,在某些實施例中,如果所請求資源的安全級別較低,則可以僅要求用戶輸入口令。反之,如果所請求資源的安全級別較高,除口令之外還可以要求用戶輸入圖形驗證碼之類的附加信息。在某些實施中,可以允許用戶指定針對一個或多個資源的身份認證要求。例如,用戶可以向第二設備202托管資源時指明訪問該資源需要完成的身份認證。
[0041]應當注意,根據(jù)本發(fā)明的實施例,關于用戶、用戶設備和/或資源的信息可以被預先獲取和存儲,并且在使用中可由第一設備201訪問和參考。備選地,這些信息中的一項或多項也可以被動態(tài)地采集,并且隨同認證請求被發(fā)送給第一設備201。本發(fā)明的范圍在此方面不受限制。
[0042]繼續(xù)參考圖3,在某些實施例中,步驟S301處的授權決策還可以包括對用戶所使用的客戶端應用(例如,圖1中所示的客戶端應用203)進行認證。例如,在某些實施例中,響應于用戶身份通過認證,客戶端應用203可以向第一設備201請求訪問令牌以用于訪問由第二設備202提供的資源。此時,可以對客戶端應用203進行認證。
[0043]傳統(tǒng)上,例如在OAuth規(guī)范中,響應于用戶身份認證的成功,第一設備201可以生成一個編碼(code)并且將其提供給客戶端應用203??蛻舳藨?03可以使用該編碼完成認證。不同于現(xiàn)有技術,在本發(fā)明的某些實施例中,對客戶端應用203的認證同樣可以被自適應地定制。
[0044]例如,對客戶端應用的認證過程的定制可以基于任何預定義的協(xié)議或規(guī)則(例如,服務水平協(xié)議SLA,等等)來完成。例如,在某些實施例中,客戶端應用203的證書、簽名或者任何其他認證信息可以基于預定協(xié)議而被添加到從客戶端應用203發(fā)往第一設備201的針對訪問令牌的請求中。由此,第一設備201可以至少部分地基于此類認證信息來認證客戶端應用203。備選地或附加地,在針對訪問令牌的請求中可以包含利用公鑰加密的數(shù)據(jù)段。在接收到針對訪問令牌的請求之后,第一設備201可以使用對應的私鑰對加密數(shù)據(jù)段進行解密。如果解密成功,則客戶端應用203通過認證。
[0045]應當理解,根據(jù)本發(fā)明的實施例,在步驟S301處對用戶身份和/或客戶端應用的定制化認證是可選的。換言之,在某些實施例中,可以按照傳統(tǒng)的認證標準或者規(guī)范(例如,OAuth規(guī)范)來執(zhí)行認證,而不對認證進行任何定制。
[0046]如果在步驟S301處確定授權對所請求資源的訪問,則第一設備201可以生成訪問令牌。該訪問令牌指示允許客戶端應用203訪問由第二設備202提供的設備。如已知的,訪問令牌可被第一設備201提供給客戶端應用203,客戶端應用203轉而可以使用訪問令牌向第二設備202請求對資源的訪問。
[0047]根據(jù)本發(fā)明的實施例