2008-12-15 18 views
1

在多服務器環境中,用戶將能夠使用頁面來放置,更新或刪除服務器上的文件。我正在考慮使用IIS線程調用的web服務(在每臺服務器上)來完成這項工作(使用aspx管理頁面)。但是,由於顯而易見的原因,我並不希望任何人都能夠調用該web服務(通過在他們的機器上發佈格式良好的請求)。如何有效驗證用戶調用Web服務?

我想知道什麼是最有效的(在複雜性,可擴展性方面),以確保對web服務的訪問僅限於我的頁面(令牌?發送當前用戶的Principal?我沒有訪問權限因此發送登錄名/密碼對是不可能的)

+0

這是內部還是外部? – JFV 2008-12-15 18:42:34

+0

所有服務器都轉到集中式Web服務嗎? – 2008-12-15 18:50:57

回答

0

你應該能夠獲取的呼喚通過獲取IPrinciple對象的Web服務存儲在用戶:

IPrinciple _currentUser = HttpContext.Current.User; 

一旦你的當前用戶,你應該能夠做是否您的驗證不是該用戶有權通過檢查用戶是否處於正確角色或者您爲檢查權限而設置了其他任何方式來執行他們試圖執行的任何操作。

1

您可以將SHA1哈希與瀏覽器組合(例如MSIE6.0或FireFox3)生成的每個傳入請求的IP地址相關聯, IP地址,用戶名(如果可能的話)和/或時間,並將其存儲在數據庫(可能是sqlite)中,並具有適合文件上傳/傳輸完成(例如1小時)的到期時間。因此,對於每個請求,您可以使用IP地址檢查關聯的散列。

如果通過瀏覽器查看頁面,那麼我建議使用cookie來傳輸哈希。

注:我說SHA1哈希,因爲它的160位長(40字節)。所以碰撞並不容易,尤其是如果您將時間與用戶特有的某些內容結合使用以產生摘要。

我在C++上工作,所以我在CGI應用程序中實現了類似的功能。

相關問題