2011-01-27 114 views
9

我的場景是3層應用程序,其中數據層是SQL Server數據庫,中間層是WCF應用程序,託管在Windows服務中,最後演示文稿是Asp.Net MVC應用程序。WCF/ASP.NET身份驗證

像往常一樣,中間層是執行所有業務邏輯的層。訪問數據庫,定義業務規則等。

好吧,到目前爲止好!但現在問題是:在這種情況下你如何處理安全問題?我的意思是,用戶必須登錄ASP.NET應用程序,但我不僅要在ASP中對其進行身份驗證,還要在WCF中間層進行身份驗證,因爲WCF服務應該可以被更多應用程序訪問。

我想讓用戶登錄到Asp.Net應用程序,並讓WCF知道憑據。 WCF中是否有某種會話用於指定登錄用戶?

專業人員在這種情況下如何處理安全問題?我知道你可以通過消息安全保護WCF服務,但Asp.Net和WCF如何在單個登錄用戶上同步?我想確保WCF操作取決於用戶的授權手段。

+0

這是一個太大的問題需要處理 - 它需要在WCF培訓套件50頁。建議你從一些研究開始,然後發佈你有任何具體問題 - http://mscerts.net/programming/user-level%20security%20%20%20authorization%20and%20impersonation%20%28part%201%29%20 - %20authorization.aspx – 2011-01-27 05:50:44

回答

2

我會建議尋找到像使用HMAC(散列消息認證碼)的方式爲您的安全,或類似的基於令牌的方法。這個想法是爲你的WCF層簽名,它可以用來驗證請求並識別發出請求的用戶。

基本元素將是一種令牌和用於簽署每個請求的某種共享祕密。該令牌將允許您在WCF端識別用戶,並查找共享密鑰以驗證請求。您還可以添加時間戳/隨機數以防止重放攻擊等。

對於構建在WCF上的一些REST服務,我已經使用了這種方法 - 客戶端不需要存儲用戶名和密碼,只是用於通信的安全令牌。在你的情況下,你需要理清如何交換ASP.NET層和WCF層之間的令牌,但是它會爲你的WCF服務的任何使用者提供一個統一的認證方法。