我們有一個客戶端/服務器應用程序,其中包含一個富客戶端前端(在.Net中)和一個管理門戶(Asp.Net)。目前用戶必須在富客戶端和網站上登錄。我們希望讓他們登錄富客戶端,但如果他們從客戶端啓動它,則無需登錄網站。我們怎麼做到這一點?在桌面應用程序和網站之間啓用單一登錄
以其他方式走並不重要,但如果可能的話會很好:登錄到網站,然後不必登錄富客戶端。
我們有一個客戶端/服務器應用程序,其中包含一個富客戶端前端(在.Net中)和一個管理門戶(Asp.Net)。目前用戶必須在富客戶端和網站上登錄。我們希望讓他們登錄富客戶端,但如果他們從客戶端啓動它,則無需登錄網站。我們怎麼做到這一點?在桌面應用程序和網站之間啓用單一登錄
以其他方式走並不重要,但如果可能的話會很好:登錄到網站,然後不必登錄富客戶端。
一個可能的解決方案是:
您可以將標記添加到打開網站的URL中以標識它們。
你得一些安全添加到令牌:TTL,哈希,鹽
確保有令牌上的超時,說2-5分鐘,以確保它是真實的。
簡單的令牌解決方案遭受設計缺陷:您將有某種可以被反向設計的祕密,如果想要的話。如果圓頂正確,這可以完全避免。
我會提出一個質詢 - 響應算法。
*)用戶loggs到豐富的客戶端與PW
*)從鹽+密碼SHA256或類似的散列計算。 (哈希A)
*)用戶點擊「轉到網站」鏈接。
*)http響應開始(例如作爲web服務),用戶爲用戶帳戶提取「獲取票證號碼」。這張票的有效期爲短時間(幾分鐘)
*)客戶端計算哈希(波沙+門票)HashB
*)終於 - 瀏覽器指向www.example.org/?username=donkey & key = 99754106633f94d350db34d548d6091a
*)服務器檢查他的計算出的散列是否與提交的散列相同。
優點這種方法的:
-server從來不知道密碼,只有鹽醃哈希。
- 即使散列從來沒有通過線傳輸 - >沒有重播攻擊。
OAuth怎麼樣?
開放協議以允許安全API以簡單 授權和從桌面和web應用程序 標準方法。
如果密碼在桌面應用程序中完全不可用,並且在網站中只有未知的密碼散列可用,該怎麼辦? – 2011-07-21 19:58:35