2012-06-29 61 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的请求,但你必须 处理会话超时一个服务请求自己。