2011-05-14 77 views
5

我在尋找關於REST風格的API設計的建議。我已經閱讀了很多關於REST API方案,認證/授權方式等內容。我不能確定的是,如果我真的需要使用API​​密鑰。根據我的理解,如果您要監視使用情況,限制每個應用程序的請求和統計數據,使用API​​密鑰很有用。REST風格的API鍵建議

我想避免什麼是必須添加/管理/刪除應用程序,並添加/刪除應用程序管理員創建額外的Web界面。也許有一個更簡單的方法來做API密鑰分發。還是我真的需要那些?我的意思是,監控和限制使用是很酷的,聽起來很有用,但它值得我需要爲密鑰分發做的其他事情。

更具體地講我的網站是一樣的東西SlideShare上和scribd。我想給API訪問其功能,如添加和管理文檔以及獲取有關用戶的信息。因此,例如上傳一個文件,你需要以某種方式進行身份驗證,並使用一個特定的帳戶來做到這一點。在這種情況下是API密鑰的一個要求,或者我可以堅持認證用戶?

那你覺得對我來說是處理API密鑰的最佳途徑?或者我應該使用它們呢?有更聰明的方式來分發(創建,刪除)密鑰嗎?

感謝提前:)

回答

4

以及你知道mashery http://www.mashery.com/和programmableweb?

也許有一些有用的ressources http://www.mashery.com/solution/collegeboard

http://www.3scale.net/

我會用統計和限制API密鑰,但還沒有一個像谷歌API密鑰服務一些服務不

你可以輕鬆地創建與像
Restler http://luracast.com/products/restler/ 解決方案的API 210個Frapi http://getfrapi.com/
的Datatank http://thedatatank.com/
服務(只爲Drupal)http://drupal.org/project/services

有一些更多:http://blog.programmableweb.com/2011/09/23/short-list-of-restful-api-frameworks-for-php/

+0

我檢查了你放在這裏的那些鏈接。我不想使用外部服務(即使它們是免費的)。而關於使用api密鑰進行某些服務,而不是將其用於其他服務,是否會影響API密鑰的用途? – stormbreaker 2011-05-14 21:05:40

+0

好吧谷歌這樣做是這樣幾年和許多其他的,也比你自己寫(如果不存在一個周圍的web sourceforge等)api管理軟件。使用api密鑰限制所有內容(不知道你的主機是誰)要好得多,因此你可以完全控制使用情況,以便濫用軟件的風險要低得多,安全性也要高一些。或者每個人都可以在沒有api的情況下使用它,並且可以做他們想做的任何事情(並且最終每小時將服務器的請求降低到很多)。我認爲安全性更重要。 – 2011-05-14 21:18:23

+0

好的,你回答爲什麼我應該使用API​​密鑰。如何使用它?如果我向所有請求的人提供一個API,它不會允許他們切換這些API並仍然做壞事? – stormbreaker 2011-05-15 08:21:50

2

我上面的帖子回答過 - 但跑出空位。作爲免責聲明,我爲3scale(http://www.3scale.net)工作,所以你可能想分析我的迴應基於:)。

的回答你的問題真的取決於你的資源API揭露和你的目標追蹤/限制什麼。這聽起來像大多數功能綁定到某種用戶帳戶,但可以由第三方執行。

在這種情況下最有用的圖案可能是有針對調用API +還用戶憑證的每個應用程序的標識符(公共或祕密)。應用程序標識符可以是APIKey或甚至只是一個名稱(例如「tweetdeck」)。如果你最終得到很多第三方應用程序,那麼跟蹤這些標識符(這意味着至少有一種方法來發布它們)並知道誰構建每個應用程序+能夠關閉它們(如果只是關閉那些濫用你的用戶羣的人)。您可能還想對每個用戶和應用可以在API上生成的流量限制進行評分,因此再次使用標識符也很有用。另外,如果您的用戶身份驗證通過,但允許第三方編寫您的用戶使用的應用程序,則必須考慮oAuth(http://www.oauth.net)以避免惡意代碼/網站捕獲您的用戶密碼。

你提到上面,你是不是熱衷於外部服務 - 沒問題,3比例作品實際上做所有的API身份驗證您的本地SYSTEN(如與代碼插件之一:https://support.3scale.net/libraries或類似光油代理: https://github.com/3scale/libvmod-3scale/),然後在雲中進行跟蹤。顯然,它並不適合所有用例,但可以給你一些開箱即用的有用工具。

+0

謝謝:)!當我需要做這樣的事情時,我會考慮3scale,因爲我問的項目已經完成了。 – stormbreaker 2012-05-16 16:07:18