2008-09-17 36 views
1

我們有一個客戶端/服務器應用程序,其中包含一個富客戶端前端(在.Net中)和一個管理門戶(Asp.Net)。目前用戶必須在富客戶端和網站上登錄。我們希望讓他們登錄富客戶端,但如果他們從客戶端啓動它,則無需登錄網站。我們怎麼做到這一點?在桌面應用程序和網站之間啓用單一登錄

以其他方式走並不重要,但如果可能的話會很好:登錄到網站,然後不必登錄富客戶端。

回答

4

一個可能的解決方案是:

  • 登錄到富客戶端
  • 隨機令牌由服務器生成並再次存儲登錄用戶
  • 富客戶端從服務器獲取該令牌
  • 該令牌用於指向網站的url
  • 去那個URL(使用鏈接或按鈕從富客戶端)將自動登錄用戶和重置令牌
0

您可以將標記添加到打開網站的URL中以標識它們。

你得一些安全添加到令牌:TTL,哈希,鹽

1

確保有令牌上的超時,說2-5分鐘,以確保它是真實的。

2

簡單的令牌解決方案遭受設計缺陷:您將有某種可以被反向設計的祕密,如果想要的話。如果圓頂正確,這可以完全避免。

我會提出一個質詢 - 響應算法。

*)用戶loggs到豐富的客戶端與PW

*)從鹽+密碼SHA256或類似的散列計算。 (哈希A)

*)用戶點擊「轉到網站」鏈接。

*)http響應開始(例如作爲web服務),用戶爲用戶帳戶提取「獲取票證號碼」。這張票的有效期爲短時間(幾分鐘)

*)客戶端計算哈希(波沙+門票)HashB

*)終於 - 瀏覽器指向www.example.org/?username=donkey & key = 99754106633f94d350db34d548d6091a

*)服務器檢查他的計算出的散列是否與提交的散列相同。

優點這種方法的:

-server從來不知道密碼,只有鹽醃哈希。

- 即使散列從來沒有通過線傳輸 - >沒有重播攻擊。

+0

如果密碼在桌面應用程序中完全不可用,並且在網站中只有未知的密碼散列可用,該怎麼辦? – 2011-07-21 19:58:35

2

OAuth怎麼樣?

開放協議以允許安全API以簡單 授權和從桌面和web應用程序 標準方法。

相關問題