2013-07-30 82 views
0

我們計劃在我們的系統中使用OAuth 2.0,我們對安全級別感到不舒服。 OAuth 2成爲業界標準,所以我懷疑我們可能會錯過一些東西:-)OAuth2.0 - 它如何防止客戶端模仿?

我們需要保護系統API;一些API公開了對用戶信息的訪問,而另一些則沒有。用戶可以在不登錄的情況下使用系統,當稍後進行需要他的身份驗證的操作時,他需要提供他的憑證。

所以,我們將首先使用客戶端憑據授權授權來識別客戶端。我們更喜歡這種模式,因爲它看起來更安全以使用密鑰。客戶端是加載到用戶代理的Java腳本應用程序。流程是:

  1. 用戶代理請求應用程序的後臺加載應用程序
  2. 客戶端的後臺將調用授權服務器授權客戶端。它將提供client_id和secret_key。一旦獲得成功,將發佈訪問令牌。
  3. 將被加載到客戶端的應用程序將包含訪問令牌。
  4. 客戶端將使用該令牌來訪問系統API的

問:任何人都可以使用應用程序的URL。如果你加載應用程序,你的手中就有了訪問令牌。你不需要提供客戶端ID或任何祕密......它就在那裏。那麼安全性在哪裏?

對於需要識別用戶的情況,我們考慮使用隱式授權授權。在這種情況下,我們不使用密鑰,因爲它不是客戶端的祕密。但是,任何知道client_id並擁有註冊用戶的人都可以獲得訪問令牌。問:所以,問題再次是關於安全性,我們如何知道訪問系統的客戶端是真正的客戶端?

感謝,

Aviram

回答

0

爲什麼你關心用戶獲得訪問令牌?使用該令牌,只有屬於該用戶的數據纔會暴露給該應用。

對於用戶需要識別的情況:現在後端服務器已經在那裏,代碼流也可以使用。用戶和客戶都被識別。

對於用戶不需要識別的情況:客戶端的後端服務器中的代理是否可以接受?訪問令牌只能是代理服務器,您可以確保它是真正的客戶端。 唯一的問題是代理需要檢查每個HTTP請求的來源,以確保它來自同一個域。在向代理髮送請求時,JavaScript應用程序可以添加一些自定義標頭。

相關問題