【问题标题】:What is the most efficient/secure way to authenticate a web service in ASP.NET?在 ASP.NET 中对 Web 服务进行身份验证的最有效/最安全的方法是什么?
【发布时间】:2009-08-19 04:09:22
【问题描述】:

背景:** 我们有一个 ASP.NET Web 应用程序,它公开了简单的 ASMX Web 服务,例如:

  1. string GetOrders(string userName,string password,DateTime orderDate) :返回一个 XML 字符串 基于用户的客户订单 (客户)。

  2. void UpdateOrders(string userName, string password, Guid orderGuid, string orderXml) : 更新订单 数据(来自 XML Payload)基于 订单的 GUID。

示例:

WebServiceClient proxy = new WebServiceClient();
string xmlData = proxy.GetOrders("james","password",DateTime.Today);

我的问题是:

  1. 虽然我们使用 HTTPS:这是 方法实际保存?
  2. 在 ASP.NET 中什么是更好的替代方案?

【问题讨论】:

  • 使用 https 将加密请求/响应,但不能解决身份验证问题。
  • 您知道 Microsoft 现在将 ASMX Web 服务视为“传统技术”吗?您应该关注 WCF。

标签: web-services authentication asmx


【解决方案1】:

这里是similar thread,涵盖了其中一些问题。

一般来说,即使使用 SSL 连接,也不要以明文形式发送密码。质询响应是保护您的密码的好方法,这也是许多银行所做的。 基本上向用户发送时间戳或类似的东西,这取决于您何时调用服务。然后让用户用他的密码哈希 + 时间戳作为响应,这样即使密码哈希被拦截,它也不能用于访问您的服务,因为下次调用它时哈希需要不同。

【讨论】:

    【解决方案2】:
    1. 凭据的传输是安全的,因为客户端和服务器之间的连接和连接是加密的。但是,连接的内容并不安全。如果 SSL 证书被破坏,或者如果有人要解密该流量流,则用户名和密码基本上是明文。

    这对您来说有多安全取决于数据的性质以及您可以接受的内容。

    1. 作为替代方法,更新服务以使用 WCF (Windows Communication Foundation)。它有一套更强大的方法来处理 Web 服务的经过身份验证和授权的通信。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-25
      • 2011-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-29
      相关资源
      最近更新 更多