【问题标题】:Console Application with ASP.NET Authentication带有 ASP.NET 身份验证的控制台应用程序
【发布时间】:2011-01-05 20:22:32
【问题描述】:

情况就是这样,我有一个控制台应用程序,它需要每天运行一次,并向需要身份验证才能查看的页面发出一些请求。这些页面托管在一个非常基本的 ASP.Net Web 应用程序中。

所以,我知道为了使请求成功通过,我必须通过服务器进行身份验证。因此,我已将控制台应用程序连接到我用于 Web 应用程序的 ASP.Net Membership Provider,它成功地确定了一组凭据是否有效。但是,在调用 Membership.ValidateUser() 之后,我提出的任何请求都会得到登录屏幕。在做了一些阅读之后,这似乎是因为我错过了重要的 cookie 信息,这些信息会保留我的登录信息或你有什么。

我正在使用基本的 WebClient 发出请求,然后读取/丢弃结果。

所以问题的核心是:是否有一种简单的方法来验证登录信息并保留它,以便我可以成功发出请求,或者这与我发现的其他两个问题完全相同需要 WebClient 向 login.aspx 页面发出“手动”登录请求并尝试从那里保留 cookie?

我提到的问题是:

Authenticating ASP.NET MVC user from a WPF application

Login to website and use cookie to get source for another page

【问题讨论】:

标签: asp.net security console-application webclient roleprovider


【解决方案1】:

使用 FormsAuthentication,网络服务器必须为您生成 Forms Authentication Ticket。最好的(唯一的?)方法是登录网站,所以我只需像其他问题一样登录。

【讨论】:

    【解决方案2】:

    如果意图是向服务器发送数据和/或从服务器获取数据,那么最合乎逻辑的架构可能是使用 ASMX 或 WCF 创建 Web 服务。然后将服务配置为使用安全令牌,例如用户名令牌或 SAML 令牌。当服务器代码更改其数据模型时,这将降低客户端中断的可能性。

    否则,如果您只想使用基本的 WebClient,那么您必须找到一种方法将您的凭据传递到登录页面并保留从登录请求返回的登录 cookie。然后,确保登录 cookie 包含在所有后续请求中,类似于您引用的 Stack Overflow 问题“登录网站并使用 cookie 获取另一个页面的源代码”。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-19
      • 1970-01-01
      • 2011-09-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多