2009-07-07 108 views
2

Silverlight 3和WPF中有一些與數據Web服務(基於WCF)通信的應用程序。 有必要保護數據Web服務。只有已知的用戶才能訪問數據。 解決方案將在本地網絡中工作,無需從外部訪問。將安全令牌綁定到特定的客戶端機器

客戶端首先通過SSL連接到認證Web服務(提供用戶名和密碼)並獲得安全令牌。之後,將此令牌傳遞給數據Web服務以驗證用戶並訪問數據。

這裏是問題:如何限制安全令牌的使用到最初發布的機器?

最初的想法是要加入到安全令牌的客戶端IP地址,但它可以在某些情況下會導致重新認證。例如,當用戶機器具有本地網絡和Wi-Fi網絡連接時。在這種情況下,從一個連接切換到另一個連接會導致客戶端機器的IP地址發生變化,從而導致安全令牌無效。

有沒有這種事情的模式?

回答

2

有沒有100%的方式來綁定一個安全令牌的機器:(

我們通常做的是假設,如果你有憑據獲得令牌擺在首位,你在。在良好的團隊,我們還挺信任你,畢竟,我們讓你無論如何訪問我們的數據

我有一對夫婦的想法:

  • 爲了您的令牌,你可能想使用表單身份驗證。默認情況下,它會發出tok保存爲cookie,但可以配置。另一個很酷的事情是它會自動失效(再次,可配置)令牌。使用自己的令牌/安全系統有很多潛在的錯誤,使用現有的系統會給你帶來很大的影響。甚至有一個WCF service for authentication
  • 如果你真的,有關限制從特定的計算機電話很嚴重的,可以使用2路SSL與客戶機上的證書。它仍然不是一個簡單的解決方案(有人在良好的團隊可能仍在與爛隊人共享證書),但它可以確保客戶端有你分發的證書。缺點是這個東西是pain in the neck to configure

澄清:嘗試一個思想實驗。即使您可以從Silverlight調用Win32 API來獲取機器信息並將其用於令牌,您仍然沒有一個萬無一失的解決方案。您的API調用可以被虛擬化。對於這個問題,你的整個客戶端機器可以被虛擬化。爲了證明這一點,請參閱Darknet紙或現有的任何DRM系統。這是不可贏取

這裏是你如何限制某人從良好的團隊給予某人的爛隊您的令牌的損害。您在一段時間後過期令牌。然後,你正在處理的情形是這樣的:用戶提供了一個合法的用戶名/密碼,所以他們有一定的時間內獲得(10分鐘,10小時,10天,等等),和你不在乎無論他們是從Silverlight,AJAX還是Atari 2600進行調用。 畢竟,他們只是證明了他們是在良好的團隊與用戶名/密碼。這是一場你可以贏得的比賽。

0

如果客戶端可以訪問系統,嘗試讀取硬盤序列號,網卡MAC地址,主板序列號等,它們結合在一起,並生成一個散列出來。然後將此散列與憑據一起發送以獲取安全令牌。散列也應該保存在服務器上。然後在隨後的所有請求中,客戶端都會提交安全令牌以及剛剛生成的機器哈希。服務器驗證憑證和散列。特別是,安全令牌是否使用此特定散列生成。

一些工作量,但它是可行的,它很有趣。

+0

的Silverlight無法訪問底層系統。此外,如果有人可以將安全令牌與生成的機器哈希(服務不受SSL保護)一起獲得,則仍可以從另一臺呈現令牌+哈希的計算機訪問數據Web服務。 – IuriiZ 2009-07-07 21:01:38

+0

指紋機只能使用機器的數據,這意味着一些硬件信息被創建,而不是OS /軟件安裝。如果Silverlight無法訪問它,那麼邏輯表明你的想法是徒勞的。 – User 2009-07-07 21:16:53