2010-08-23 386 views
2

如何使用Guid在同一個域上實現單點登錄?我不能使用會話,因爲不同的網絡應用程序會在新窗口中打開,從而失去會話。使用Guid的單點登錄

使用的技術:ASP.net 3.5,MVC2架構,C#。

+0

是否必須是GUID?或者您是否只需要Active Directory來驗證/傳遞用戶憑據到您的ASP.NET網站? – Gary 2010-08-23 19:46:16

+0

我寧願它是一個GUID,因爲我打算使用該值和用戶ID來驗證用戶。 – user428747 2010-08-23 20:49:02

+0

請參閱:http://stackoverflow.com/questions/315403/getting-authenticate-ad-users-objectguid-from-asp-net – Gary 2010-08-23 21:06:03

回答

2

您應該可以使用cookie並通過任何應用程序在同一個域下運行來訪問它。如果其他Web應用程序坐在一個子域,你需要設置的Domain餅乾,如:

Response.Cookies("CookieName").Domain = ".mydomain.com" 

如果在內部網中存在的網站和用戶都登錄到Windows使用唯一的用戶帳戶,您可以打開Windows身份驗證並從其Web請求中讀取其Windows用戶名以確定用戶。

編輯詳細說明: 讓每個站點讀取cookie。您可以根據是否存在cookie來確定用戶是否已登錄,可以通過設置cookie過期來進行管理。

如果您想要使這更復雜(可能只依賴於cookie的安全問題),您可以將GUID存儲在數據庫中,並讓每個頁面查看以確保它們傳遞的GUID在有效。從這裏,然而你想管理在數據庫中驗證的GUID是由你決定的(比較時間戳等)。

您可能希望將其他信息存儲在Cookie中以用於驗證。例如,您可以生成一個隨機字符串並將其與GUID一起存儲在數據庫中。對該字符串執行單向加密,並在初始保存時將其存儲在Cookie中。這樣,您可以在檢查cookie是否有效時比較該值。

+0

謝謝你有幫助... – user428747 2010-08-24 15:35:14

+0

謝謝你們。我使用system.guid爲每個登錄用戶生成一個guid值並將其保存到數據庫中。這是我登錄用戶的唯一標識符,用於執行簽名登錄。 – user428747 2010-09-13 15:24:23

+0

我正嘗試在webapp上創建一個單一的標誌,以便使用他們自己的數據庫訪問不同的網站。我怎樣才能做到這一點。 – user428747 2010-10-07 18:34:35