【问题标题】:How to Anonymously Authenticate between a VB.Net Desktop App and ASP.Net Web App如何在 VB.Net 桌面应用程序和 ASP.Net Web 应用程序之间进行匿名身份验证
【发布时间】:2010-12-22 23:27:49
【问题描述】:

我正在寻找一种将某种凭据或授权令牌从 VB.Net 客户端传递到 ASP.Net Web 应用程序的方法,该应用程序允许客户端自动登录到我们的 Forms-Authenticated 网站。如果用户登录到本地应用程序,我希望他们能够查看一些网页而无需登录到网站。应用程序之间的凭据不一样,但我只想将某种加密令牌或密钥传递给网页,以便我知道它们来自桌面应用程序。这是否可能不需要用户名和密码登录?

我还需要确保所使用的这个 URL 不能简单地从另一个位置复制和使用,所以我需要在加密值中包含某种信息以了解它的来源。

我知道如何使用表单身份验证和所有这些登录用户,只需要找出保护这一点的最佳方法。谢谢!

【问题讨论】:

  • 您能告诉我们更多关于如何使用 VB.Net 客户端对用户进行身份验证的信息吗?以及在那之后他们如何与服务器通信?

标签: asp.net vb.net security forms-authentication


【解决方案1】:

您的桌面应用程序是否在与您的网络服务器在同一个域中的计算机上运行(即都在同一家公司)?如果是这样,集成 Windows 身份验证是您最简单的解决方案。

【讨论】:

  • 不,它们会在任何地方通过互联网传输。
【解决方案2】:

您可以使用 ASP.NET 客户端应用程序服务在应用程序之间共享凭据。

这里有一些资源:

Client Application Services

Client Application Services with Visual Studio 2008

【讨论】:

  • 谢谢,这看起来很有可能。但是,我正在寻找的主要内容是能够在幕后传递某种加密令牌以自动登录,而无需任何用户名和密码。这就是我仍在努力解决的问题。
【解决方案3】:

您可能希望考虑为这些应用程序颁发客户端证书。基本上,您生成一个证书,并与客户端应用程序一起安装,然后在服务器端检查当前上下文中 Request 属性公开的 HttpRequest 实例的 ClientCertificate 属性。

请注意,您所做的确实是一个非常糟糕的主意,因为应用程序应该永远被分配身份,只有用户。为此,您应该对使用您的应用程序的每个用户进行身份验证,而不是将应用程序视为身份。这样做通常被认为是一种不好的做法。

【讨论】:

  • 感谢 casper,我同意这不是一个理想的解决方案......但我没有得到太多的工作。我们无权访问要验证的 Web 服务器上的用户信息。但是,我认为我可以使用用户信息来帮助限制仅对当前用户的访问。我会做一些测试,然后回到这篇文章。谢谢。
【解决方案4】:

我认为最好在桌面应用程序中使用 Web 浏览器控件。 然后很可能使用WebBrowser1.Document

WebBrowser1.Document.Cookie

获取用户是否登录。

【讨论】:

    【解决方案5】:

    我还需要确保这个 URL 不能简单地复制和使用 从另一个位置使用,所以我会 需要包括某种 加密值中的信息 知道它来自哪里。

    如果您将加密值存储在 cookie 中或作为表单中的字段(POST 请求),则凭据不再位于 URL 中,因此无法轻松复制(请注意,我说的是“容易” )。

    【讨论】:

      【解决方案6】:

      OAuth 通常用于允许桌面应用程序访问网站上用户的私人数据。由于您使用的是 .NET,我建议您查看 DotNetOpenAuth,其中包括示例 OAuth 网站和客户端应用程序。它允许传递这个安全令牌,它可以告诉您的网站桌面应用程序是发出请求的应用程序以及(通常)正在访问其数据的应用程序。

      关于 OAuth 解决方案的最佳部分是您的桌面应用程序永远不需要询问用户的凭据。 URL 中没有凭据。如果桌面应用程序遭到入侵(可能是由于计算机被盗),网站可以终止桌面应用程序用来切断访问的安全令牌,而无需用户更改密码。

      【讨论】:

      • 这听起来像是这个场景的完美解决方案,感谢 Andrew!
      猜你喜欢
      • 2010-11-06
      • 2011-01-22
      • 1970-01-01
      • 2015-06-15
      • 2011-11-04
      • 2011-06-24
      • 2012-07-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多