【问题标题】:Secure Webservice best practices安全 Web 服务最佳实践
【发布时间】:2014-01-21 12:31:13
【问题描述】:

我正在构建一个 Web 服务,但遇到了一些我应该选择的选项。因此,我希望有人能指出我正确的方向。我找到了很多文章,但没有一篇文章或多或少有我想要的选项。

我希望网络服务做什么: 客户端应该获得从 ASMX 文件派生的 WSDL。在该服务中,有一个未经身份验证的 Web 方法,称为“Authenticate(string Username, String Password)”,它返回一个自定义的 AuthenticationSoapHeader。 AuthenticationSoapHeader 与 Web 应用程序中使用的 System.Web.Security.FormsAuthenticationTicket 类完全相同并且最好是相同的。

http://www.codeproject.com/Articles/4398/Authentication-for-Web-Services-using-SOAP-headers

http://www.codeproject.com/Articles/27365/Authenticate-NET-Web-Service-with-Custom-SOAP-Head

我正在考虑使用上面的文章来实现这一点,并更改将加密的票证的用户名密码组合,包括使票证过期的日期时间戳。我的问题。

  • 这会被认为是最佳实践吗?如果没有,我还有什么更好的选择。
  • 是否有必要使用 WSE3“Microsoft Webservice Enhancement”?
  • 如果您对 Web 服务有点陌生,WCF 是不是更好的选择?

soap 请求通过 Https SSL,不需要在客户端进一步加密。提前谢谢你。

最好的问候,

丹尼

【问题讨论】:

    标签: c# asp.net wcf web-services soap


    【解决方案1】:

    我无法回答所有这些问题,但我可以回答几个问题:根据您的描述,IMO WCF 是您作为该项目所需的工具集。 WCF 有许多不同的风格(http、TCP 等),并且每种风格都有几个不同的选项来实现安全性。

    WCF 具有用于用户/密码验证的选项,或者您可以构建自定义方法,或者您可以构建一个 Login() 函数,该函数将 UserID 和 Password 作为参数,返回一个布尔值。还有一些选项允许您在主程序收到请求之前进行身份验证。这就是内置的 UserID/Password 身份验证所做的。

    如果您在主机上实现 SSL,假设您使用以 http 为中心的绑定,则您不需要在客户端进行任何加密,因为 WCF 软件会处理这一点,只要您同时拥有主机和正确配置的客户端软件。实际上,您的 WCF 客户端应用程序将像浏览器一样运行,将所有令人讨厌的证书内容隐藏起来。

    WCF 还允许您 a) 将 Web 服务作为独立的 Windows 服务(称为“自托管”)运行,或 b) 允许您在 IIS 后面配置 Web 服务,这有一些优势。如果需要,WCF 还将为您的客户提供 WSDL。

    WCF 还有其他一些好处;如果星期一早上 8 点有 10,000 个并发用户访问您的 Web 服务,WCF 会自动将它无法处理的请求排队,并尽可能按顺序处理它们。我用这样的数字猛烈抨击了我们的测试网络服务,并且该程序从未崩溃,处理> 150次登录和文件上传/秒。 WCF 也适用于 Java、iOS 和 Android。

    【讨论】:

      猜你喜欢
      • 2015-07-26
      • 1970-01-01
      • 2014-07-07
      • 2011-08-06
      • 1970-01-01
      • 1970-01-01
      • 2010-09-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多