将当前的Web凭据从asp.net Web应用程序传递到vb.net中的Windows客户端应用程序

时间:2011-11-20 03:55:20

标签: asp.net .net vb.net web-applications authentication

我正在开发一个Web应用程序,要求用户使用表单身份验证登录。在网页内部,您需要下载需要登录同一系统的桌面应用程序。有没有办法将当前记录的凭据从Web应用程序传输到Windows桌面应用程序而无需再次登录?两个应用程序都从vb.net接口共享一个Login对象。

我尝试在数据库中保存IP地址,但这对我不起作用,因为网站需要在公司内部和/或外部访问,用户无法在不同的计算机上登录两次。

我试图谷歌寻求解决方案,但没有运气。

你对此有什么建议吗?

2 个答案:

答案 0 :(得分:0)

如果不加密包含用户凭据的文件并将其与文件一起存储在硬盘驱动器上,那么实际上没有任何方法可以共享此内容,但是您可能会冒着某人解密信息并获取用户访问权限的风险密码。

我认为可行的另一种方法是生成身份验证令牌(可能像GUID一样简单),并在用户请求下载时将其与用户的ID一起存储在数据库中。您希望此令牌在合理的时间限制后过期(例如,5分钟)。

然后,您可以在下载时包含包含此身份验证令牌的文件。当您的应用启动时,您可以检查文件是否存在。如果它在那里,你提取令牌,删除文件,在呈现用户登录之前发送令牌。

如果令牌有效,您的服务器将发回用户的登录信息,您的应用程序将继续进行,就像用户已登录一样,否则您只需显示登录屏幕。

答案 1 :(得分:0)

这可能不是完全您正在构想的场景,但本文将介绍如何使用WCF身份验证服务从Winforms客户端使用Forms身份验证。这应该让你朝着正确的方向前进。根据本文,您可以在任何.NET应用程序中使用这些服务。

http://msdn.microsoft.com/en-us/library/bb386582.aspx

本文介绍了如何使用Silverlight应用程序,只是为了让您有另一个示例。 http://blogs.msdn.com/b/brada/archive/2008/05/03/accessing-the-asp-net-authentication-profile-and-role-service-in-silverlight.aspx

还有一个是为了好玩。 http://aspalliance.com/1595_Client_Application_Services__Part_1.all#Page1