2008-12-31 119 views
2

我期待在建設一個API,並正在考慮的OAuth管理訪問API,但我在做什麼更多的是B2B系統,使企業能夠訪問數據納入其網站。一開始我不會有任何b2c。你如何管理API密鑰

所以OAuth的似乎不是適合我的工具,我一直在尋找關於構建基於關鍵系統資源,但整個事情還沒有來。

已經有東西可用了嗎? 最好只是創建一些用戶提交的數據或類似的哈希?

回答

2

你需要的僅僅是一些唯一標識用戶...只是使用UUID或者一個UUID的哈希值。

只要確保這個ID是經過安全通道,如果你通過它在不安全的通道可能需要確保實現類似於HTTP的ID摘要身份驗證的一些方法。

0

我不會只使用用戶提交的數據,因爲這可能會造成API密鑰可猜測的情況。通常,我接收用戶生成的一些數據,然後將它與一些相對唯一的數據(即當前系統時間)和使用SHA-1或其他內容的散列組合在一起,如果我不希望它顯然是一個SHA-1哈希,然後用它作爲關鍵。

1

看看幾乎所有的Web 2.0網站/服務。他們都有不同程度的認證和管理API密鑰。的Flickr,Twitter的,Github上,等

+0

正確的,但看着這些服務是不是真的給太多的指示有關管理密鑰和身份驗證(不,我反正可以辨認)。 – pedalpete 2008-12-31 23:26:47

1

根據要求,在網頁API的世界,讓你的合作伙伴/開發人員API密鑰(標識),並要求他們簽署的調用(認證)是非常標準。有很多方法來規範簽名。現在很常見的是;採取所有呼叫參數,時間戳(+/- 5分鐘擺動),共享祕密,並使用SHA-1或MD5(SHA-1更好)對其進行哈希處理。

您可以自己實施或找到合作伙伴(有幾個)爲您做。

1

的一般方法在這裏被提出(使用哈希其中包括API密鑰和當前時間)都是不錯的 - 肯定比包括消息的「密碼」更好。

但是,有一種加密標準方式來執行稱爲HMAC的這種「mung」操作。如果你想要更標準/健壯/安全的東西,那麼值得一看。

最後顯然是來自安全選項的「黃金標準」 - 使用數字證書籤署所有請求(可能在計算上很昂貴)或用於簽署初始請求,然後生成限制使用會話密鑰(例如,一個僅限API,60分鐘後到期)。

或者,您可以對傳輸層使用雙向SSL,並簡單地相信應用程序/ API中的SSL。

真的取決於你如何安全的希望...:]