[英]How to secure RESTful web services?
我必須實現安全的RESTful Web服務 。 我已經使用谷歌進行了一些研究但是我被卡住了。
選項:
TLS(HTTPS)+
是否有更多可能的選擇? 如果OAuth那么什么版本? 它甚至重要嗎? 從我到目前為止所讀到的OAuth 2.0與持有令牌(沒有簽名)似乎是不安全的 。
我發現了另一篇關於基於REST的身份驗證的非常有趣的文章。
還有另一種非常安全的方法。 這是客戶證書。 了解服務器在https上聯系時如何提供SSL證書? 服務器可以向客戶請求證書,以便他們知道客戶是他們所說的人。 客戶端生成證書並通過安全通道將其提供給您(例如使用USB密鑰進入您的辦公室 - 最好是非木馬的USB密鑰)。
您
將證書
客戶端證書的公鑰(及其簽名者的證書,如有必要)加載到您的Web服務器中,並且Web服務器將不接受來自任何人的連接, 除了擁有證書的相應私鑰的人員它知道。 它在HTTPS層上運行,因此您甚至可以完全跳過OAuth等應用程序級身份驗證(具體取決於您的要求)。 您可以抽象出一層並創建一個本地證書頒發機構並簽署來自客戶端的證書請求,允許您跳過“讓他們進入辦公室”和“將證書加載到服務器上”的步驟。
頸部疼痛? 絕對。 一切都好嗎? 不。 非常安全嗎? 對。
它確實依賴於客戶保證他們的證書安全(他們不能在線發布他們的私鑰),它通常用於向客戶銷售服務而不是讓任何人注冊和連接。
無論如何,它可能不是你正在尋找的解決方案(它可能不是誠實的),但它是另一種選擇。
HTTP Basic + HTTPS是一種常用方法。
如果在OAuth版本之間進行選擇,請使用OAuth 2.0。
OAuth承載令牌只能用於安全傳輸。
OAuth承載令牌僅與加密對話的傳輸一樣安全或不安全。 HTTPS負責防止重放攻擊,因此承載令牌也不必防止重放。
雖然如果有人攔截您的持票人令牌,他們可以在調用API時冒充您,但有很多方法可以降低這種風險。 如果你給你的令牌一個很長的有效期並期望你的客戶在本地存儲令牌,那么你的令牌被截獲和濫用的風險比你給你的令牌短期到期要大,要求客戶為每個會話獲得新的令牌,並建議客戶不要持久令牌。
如果您需要保護通過多個參與者的有效負載,那么您需要的不僅僅是HTTPS / SSL,因為HTTPS / SSL僅加密圖形的一個鏈接。 這不是OAuth的錯。
承載令牌很容易讓客戶獲取,便於客戶使用API調用,並且被廣泛使用(使用HTTPS)來保護來自Google,Facebook和許多其他服務的面向公眾的API。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.