爲我們的Web應用程序設計API時,我們將使用其子域作爲'用戶名'並生成API密鑰/共享密鑰。首先,可以使用子域名作爲用戶名嗎?我看不到產生另一個密鑰的好處。保護API:SSL和HTTP基本身份驗證與簽名
不同的API似乎做的兩件事情之一:
- 使用HTTP基本身份驗證與SSL
在每個請求的用戶名設置爲子域名和密碼的API鍵。由於我們使用SSL,所以這應該是安全的欺騙。
值得注意的API:Google Checkout,Freshbooks,GitHub,Zendesk
- 創建具有共享祕密
由通常所取得的請求的簽名排序鍵/值對並使用HMAC-SHA1和共享密鑰生成簽名。簽名隨後與請求一起發送,並在另一端進行驗證。
值得注意的API:Google Checkout,Amazon AWS
PS:多數民衆贊成毫無疑問,谷歌Checkout的支持
編輯:剛纔讀的OAuth 2滴簽名支持發送用戶名/密碼通過SSL。
任何人都有什麼意見可以選擇:SSL vs Signature?
謝謝,但是如果使用共享的祕密當然,做請求的一方必須知道這個祕密,這樣才能計算出簽名回覆! – Marcus 2011-04-01 09:59:22
簽名的計算可以在服務器上完成,然後可以將sig發送到執行實際請求的不同客戶端。看一下AWS身份驗證,我喜歡他們的身份驗證方法,並且可以*將它按原樣應用到您的API。比開發你自己的更好。 – Evert 2011-04-01 10:53:10
好吧,我想我已經在這裏回答了我自己的問題。 OAuth 2.0使用沒有簽名的SSL,我認爲SSL上的任何內容都很安全。 – Marcus 2011-04-01 13:18:08