2012-06-29 87 views
0

我有2個不同的應用程序,一個是Silverlight,另一個是Web應用程序。Silverlight 4應用程序和Web應用程序的單點登錄

我需要單點登錄。

情景是這樣的:任何用戶登錄到Silverlight應用程序,然後在該應用程序中有一個菜單,以登錄模式打開其他Web應用程序。

兩個應用程序都有不同的數據庫,但用戶名和密碼都相同。

我正在爲silverlight應用程序使用WCF服務。

有人可以提出一個解決方案嗎?

回答

0

在我看來,你應該使用一個數據庫來保存每個登錄用戶的當前會話令牌。在這種情況下,你登錄的時候並不重要,你將從這個數據庫獲取登錄令牌。

0

我假設你正在使用ASP.NET和Forms /其他身份驗證,並且Silverlight應用程序來自同一個Web服務器。

先看看這個鏈接,並從Visual Studio的Silverlight業務應用程序模板:HTTP://msdn.microsoft.com/en-us/library/ee942449(V = VS.91)的.aspx

一更多的手動方法可能包括編寫一個WCF服務,該服務返回或設置您在會話中成功登錄時存儲的「UserToken」。

// the wcf service needs these attributes 
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] 
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession)] 

// a manual approach: successful login, create a webservice method to call from Silverlight to set the authentication 
HttpContext.Current.Session.Add("currentUserToken", userToken); 
FormsAuthentication.SetAuthCookie(this.EmailAddressUserControl1.EmailAddressTextBox.Text, false); 

窗體身份驗證會照顧您的退出對ASP.Net的請求,但你必須 處理會話超時一個服務請求自己。