我花了最近幾個小時閱讀關於Oauth2協議。根據我的理解,此協議的主要動機是資源所有者不必與第三方(客戶端)應用程序共享其憑據,而只需與資源服務器共享憑據。Oauth2如何保護資源所有者?
在這篇文章中我已經用作Oauth2 RFC定義的角色。但是我沒有區分資源服務器和授權服務器。爲簡單起見,我假定它們是相同的,並將它們稱爲「資源服務器」。
我可以看到事件的兩個不同的鏈。假定這兩種情況都是以資源所有者爲開始,目的是讓客戶訪問受保護的資源。由資源服務器提供
案例1,GUI
1.客戶端轉發資源所有者的資源服務器的登錄頁面。
2.資源所有者的資源服務器的GUI提供他/她的證書。
3.在成功的資源服務器轉發的資源所有者的客戶端,並提供用戶客戶端的令牌。由客戶
1.客戶提供
案例2,GUI詢問資源擁有者提供他/她的憑據,以它自己的GUI。
2.客戶端將提供的憑證發送到資源服務器。
3.成功時,客戶端獲得令牌並訪問資源服務器。
我擔心的是2的情況下是何等的難將是客戶端獲取資源服務器上的全部特權,如果它,而不是認證作爲客戶端,認證爲資源擁有者?該RFC狀態下爲理由,要求使用的,而不是讓客戶端處理資源所有者憑證的OAuth2:
「第三方應用程序獲取對資源 所有者的受保護的資源過於寬泛的訪問,使資源擁有者沒有任何 能夠限制持續時間或訪問有限的資源子集。「
的RFC進一步指出:
「第三方應用程序都需要存儲資源 所有者以供將來使用憑證,通常在 明文密碼。」
這很可能是由客戶端的情況下,保存的2
所以......你能假設實現的oauth2客戶端(在案例2中)是更安全的,然後一個不?資源服務器是否可以實現機制來防止這些事情發生?