我們正在建立在以下幾個時尚網站:添加WIF STS服務於現有項目
Site1.Web - ASP.NET Web項目(.NET 4.0,Web窗體) Common.Core - 類庫項目(所有數據庫交互)
當所有站點共享Common.Core項目時,Web項目爲每個站點出現一次。我們在Web項目中有一個登錄表單,爲了進行身份驗證,調用類庫。這將取消類似的代碼下面:
Common.Core.Authenticate auth = new Common.Core.Authenticate(conStr);
bool validLogin = auth.ValidateUser(userName, password);
if(validLogin)
{
Common.Core.User = auth.GetCurrentUser();
}
的高層在推動中間層服務/應用層和想使用一個更優雅的解決方案來處理單點登錄。因此,決定使用WIF服務來處理登錄和驗證。此外,我們希望儘量減少每個Web項目中必須更改的代碼,即儘量在Common.Core中儘可能多地進行更改。
我看過幾個示例,展示如何將STS引用添加到Web項目。這可以在用戶驗證沒有考慮到像Core.Common這樣的其他項目中的情況下很好地工作。但是,在我們的場景中,我們如何處理驗證,同時還要經歷通用類庫?
理想情況下,我想添加一個STS引用到Core.Common類庫,並用一個STS服務的調用替換直接數據庫邏輯(auth.ValidateUser上面)。但是,甚至有可能這樣做?請求是否必須在Web項目中啓動?如果是這樣,兩個地方都需要STS參考嗎?
其遵循相同的Web項目的任何教程或資源 - >類庫 - > STS服務路徑將不勝感激。
感謝您的信息。我一直在使用的示例應用程序在asp.net網站和STS網站/服務之間建立了可信連接,沒有中間層類庫(Common.Core)。 Common.Core.User類包含存儲在數據庫中的基本信息,類似於上面的示例。一個新的User類可以很容易地從IClaimsPrincipal派生。 只是爲了確認,對於這些現有的網站,我們將不得不在Web應用程序(不是Common.Core)中建立STS連接,我們必須重構/重寫一些GetCurrentUser()邏輯以從IClaimsPrincipal? – user957802
WIF爲你做所有的工作。在某種程度上,WIF是「中間層」(實際上是HTTPModule)。所以,是的。在高水平,這是你會做的。請注意,您仍然可以讓Common.Core.User將有關用戶的數據從數據庫中提取出來。這些將是非STS提供的附加信息。在這種情況下,您需要使用一些句柄來關聯數據(例如電子郵件,UID等) –