[英]Securing an HTTP API - No user password prompt and avoiding exposing the private key
我正在研究通過HTTP公開的API,這些API將由合作伙伴公司使用並部署到其眾多客戶端。
在某些情況下,客戶端將基於瀏覽器。 這是我的主要重點,但是當客戶端是Windows應用程序時,我可能會應用相同的模式。 我覺得當它是Windows應用程序而不是基於瀏覽器的應用程序時,在客戶端上保護私鑰的范圍更大。 因此,通信是從合作伙伴應用程序渲染的瀏覽器頁面到我們托管API的服務器的。
最重要的是,我們不能提示最終用戶輸入憑據,而必須依賴於每個請求將傳遞的存儲的密碼/密鑰/令牌。 我擔心的是,我希望阻止合作伙伴公司將此令牌烘焙到客戶端代碼中。 以下是該方案的高級描述。
出於這個問題的目的,我將跳過步驟1,而將重點放在步驟2和3。
我目前正在努力保護此API的安全,並提出了以下設計方案:
我們在這里有一種聯合安全性形式,如果用戶通過合作伙伴進行了身份驗證,則我們假定他們可以訪問我們的API。 我能想到的避免將私鑰/身份驗證令牌烘烤到客戶端代碼中的唯一方法是此回調機制。
我是否使它復雜化了? 還有其他更簡單的方法嗎? 我意識到,無論哪個站點對XSS開放或受到惡意軟件的侵害,所有賭注都被取消,但至少通過不將私鑰呈現為javascript或標記,用戶無法右鍵單擊查看源並告訴所有人私鑰。
編輯:找到了這個問題。 最佳答案描述的內容與我所描述的類似,盡管提到了WIF,但我不想強迫合作伙伴實施(它們甚至可能沒有運行Windows)。 不過,我仍然希望獲得有關我的方法的反饋...
我知道您在要求簡化,但是您是否走過探索SAML聯盟的道路,在該聯盟中,每個合作伙伴在啟動應用程序時都會向您聲明其身份,並使用auth令牌對其進行cookie? 它完全避免了JS的參與,並且與SSL + CSRF令牌結合使用可讓您處於一個不錯的位置。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.