Web services 在ASP.NET中对web服务进行身份验证的最有效/安全的方法是什么?

Web services 在ASP.NET中对web服务进行身份验证的最有效/安全的方法是什么?,web-services,authentication,asmx,Web Services,Authentication,Asmx,背景:** 我们有一个ASP.NET web应用程序,它公开简单的ASMX web服务,例如: string获取订单(string) 用户名、字符串密码、日期时间 orderDate):返回 基于用户的客户订单 (客户) void UpdateOrders(字符串用户名, 字符串密码,Guid orderGuid, 字符串orderXml):更新订单的 数据(来自XML有效负载)基于 订单的GUID 示例: WebServiceClient proxy = new WebServiceClien

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

  • string获取订单(string)
    用户名、字符串密码、日期时间
    orderDate)
    :返回 基于用户的客户订单 (客户)

  • void UpdateOrders(字符串用户名,
    字符串密码,Guid orderGuid,
    字符串orderXml)
    :更新订单的 数据(来自XML有效负载)基于 订单的GUID

  • 示例:

    WebServiceClient proxy = new WebServiceClient();
    string xmlData = proxy.GetOrders("james","password",DateTime.Today);
    
    我的问题是:

  • 虽然我们使用HTTPS:这是什么 实际保存的方法
  • 在ASP.NET中有什么更好的替代方案
  • 由于客户端和服务器之间的连接和传输是加密的,因此凭据的传输是安全的。但是,连接的内容不安全。如果SSL证书被破坏,或者如果有人要解密该流量流,则用户名和密码基本上是明文
  • 这对您来说有多安全取决于数据的性质以及您可以接受的内容

  • 或者,将服务更新为使用WCF(Windows Communication Foundation)。它有一套更加健壮的方法来处理web服务的经过身份验证和授权的通信
  • 以下是一份涵盖其中一些问题的报告

    通常,即使使用SSL连接,也不要以明文形式发送密码。质询响应是保护密码的好方法,许多银行也会这样做。
    基本上是向用户发送一个时间戳或类似的东西,根据您调用服务的时间不同而有所不同。然后让用户用其密码+时间戳的散列进行响应,这样即使截获密码散列,也不能用于访问您的服务,因为下次调用时,散列需要不同。

    使用https将加密请求/响应,但没有解决身份验证问题。您是否知道Microsoft现在将ASMX web服务视为“遗留技术”?你应该关注WCF。