在ASP.NET中验证Web服务的最有效/最安全的方法是什么?

时间:2009-08-10 18:36:15

标签: web-services authentication asmx

背景:** 我们有一个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。

  3. 示例:

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

    我的问题是:

    1. 虽然我们使用HTTPS:是这样的 方法实际上保存?
    2. 什么是ASP.NET中更好的选择?

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

  1. 凭据的传输是安全的,因为连接以及客户端和服务器之间的连接是加密的。但是,连接的内容并不安全。如果SSL证书中断,或者有人要解密该流量流,则用户名和密码基本上都是明文。
  2. 这对您的安全程度取决于数据的性质以及您可以接受的内容。

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