3 回答

TA貢獻(xiàn)1871條經(jīng)驗(yàn) 獲得超13個(gè)贊
先前的答案僅在數(shù)據(jù)傳輸?shù)纳舷挛闹刑岬搅薙SL,實(shí)際上并未涵蓋身份驗(yàn)證。
您真的在問有關(guān)安全認(rèn)證REST API客戶端的問題。除非您使用TLS客戶端身份驗(yàn)證,否則單獨(dú)使用SSL 并不是REST API可行的身份驗(yàn)證機(jī)制。沒有客戶端身份驗(yàn)證的SSL僅對服務(wù)器進(jìn)行身份驗(yàn)證,這與大多數(shù)REST API無關(guān),因?yàn)槟_實(shí)要對客戶端進(jìn)行身份驗(yàn)證。
如果您不使用TLS客戶端身份驗(yàn)證,則需要使用基于摘要的身份驗(yàn)證方案(例如Amazon Web Service的自定義方案)或OAuth 1.0a甚至HTTP Basic身份驗(yàn)證(但僅通過SSL)。
這些方案驗(yàn)證請求是由預(yù)期的人發(fā)送的。TLS(SSL)(無客戶端身份驗(yàn)證)可確保通過網(wǎng)絡(luò)發(fā)送的數(shù)據(jù)保持不受干擾。它們是分開的,但又是互補(bǔ)的。
對于那些感興趣的人,我擴(kuò)展了一個(gè)關(guān)于HTTP身份驗(yàn)證方案及其工作原理的SO問題。

TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超3個(gè)贊
REST意味著使用Web標(biāo)準(zhǔn),而Web上“安全”傳輸?shù)臉?biāo)準(zhǔn)是SSL。其他任何事情都會變得很時(shí)髦,并且需要為客戶端進(jìn)行額外的部署工作,這將必須具有可用的加密庫。
原則上,一旦您提交SSL,實(shí)際上就不需要花哨的時(shí)間了。您可以再次使用Web標(biāo)準(zhǔn)并使用HTTP Basic auth(隨每個(gè)請求一起發(fā)送的用戶名和秘密令牌),因?yàn)樗染脑O(shè)計(jì)的簽名協(xié)議要簡單得多,并且在安全連接的情況下仍然有效。您只需要確保密碼永遠(yuǎn)不會覆蓋純文本即可。因此,如果曾經(jīng)通過純文本連接收到密碼,則您甚至可能會禁用密碼并向開發(fā)人員發(fā)送郵件。您還應(yīng)該確保憑據(jù)在收到后不會記錄在任何地方,就像您不會記錄常規(guī)密碼一樣。
HTTP摘要是一種更安全的方法,因?yàn)樗梢苑乐箓鬟f秘密令牌。而是服務(wù)器可以在另一端驗(yàn)證的哈希值。如果您已采取上述預(yù)防措施,對于不太敏感的應(yīng)用程序可能會顯得過高。畢竟,用戶的密碼已經(jīng)在他們登錄時(shí)以純文本格式傳輸(除非您在瀏覽器中進(jìn)行了一些精美的JavaScript加密),并且同樣在每次請求時(shí)都存儲了他們的cookie。
請注意,使用API,客戶端最好傳遞令牌-隨機(jī)生成的字符串-而不是開發(fā)人員使用其登錄網(wǎng)站的密碼。因此,開發(fā)人員應(yīng)該能夠登錄到您的站點(diǎn)并生成可用于API驗(yàn)證的新令牌。
使用令牌的主要原因是,如果令牌被泄露,可以將其替換,而如果密碼被泄露,則所有者可以登錄到開發(fā)者的帳戶,并對其進(jìn)行任何操作。令牌的另一個(gè)優(yōu)點(diǎn)是您可以向同一開發(fā)人員發(fā)行多個(gè)令牌。也許是因?yàn)樗麄儞碛卸鄠€(gè)應(yīng)用程序,或者是因?yàn)樗麄兿胍哂胁煌L問級別的令牌。
(已更新,以涵蓋僅使用SSL進(jìn)行連接的含義。)
- 3 回答
- 0 關(guān)注
- 564 瀏覽
添加回答
舉報(bào)