2012-02-23 123 views
1

我目前正在爲我們的Web服務構建一個RESTful API,該服務將由第三方Web和移動應用程序訪問。我們希望對API消費者(即那些網絡和移動應用)具有一定的控制權,因此我們可以對API請求進行限制和/或阻止某些惡意客戶。爲此,我們希望每位將訪問API的開發人員從我們那裏獲取API密鑰並使用它來訪問我們的API端點。對於某些不處理特定用戶信息的API調用,這是授權的唯一所需級別,我稱之爲「app」級別A & A.但是,某些API調用處理屬於特定用戶的信息,所以我們需要一種方法來允許這些用戶登錄並授權應用訪問他們的數據,從而創建第二級(或「用戶」級A)。RESTful API的雙重身份驗證

對於「用戶」級別A使用OAuth2有很大的意義,我認爲我對這裏需要做的事情有很好的理解。

我還實施您好!OAuth1般的方案,其中應用程序開發者收到一對API密鑰&祕密,與每一個電話提供他們的API密鑰,並用祕密簽上自己的請求(再次,這是非常您好!OAuth1喜歡的,我也許應該只是使用OAuth1)。

現在我的問題是如何結婚這兩種不同的機制。我目前的假設是,我繼續使用API​​密鑰/密鑰對來簽署所有請求,以便能夠訪問所有API端點,並且對於那些需要訪問用戶特定信息應用程序的調用,需要通過OAuth2流程並獲取訪問令牌並供應它們。

所以,我對社會問題是 - 它聽起來像一個很好的解決方案或有建築師這一些更好的方法。

我也很感激,而不是重新發明輪子,我可以用現有的解決方案的任何鏈接,(我們的服務是基於Rails的Ruby的/)。

回答