安全Web服务最佳实践

时间:2014-01-21 12:31:14

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

我正在建立一个网络服务,并且我应该选择一些麻烦。因此我希望有人能指出我正确的方向。我找到了很多文章,但没有一个或多或少有我想要的选项。

我希望网络服务做什么: 客户端应该获得从ASMX文件派生的WSDL。在该服务中,有一个名为“Authenticate(string Username,String Password)”的未经身份验证的web方法返回自定义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,不需要在客户端进行进一步加密。提前谢谢。

致以最诚挚的问候,

丹尼

1 个答案:

答案 0 :(得分:0)

我无法回答所有这些问题,但我可以回答一下:基于您的描述,IMO WCF就是您作为此项目的工具集所需的全部内容。 WCF有许多不同的风格(http,TCP等),每种风格都有几种不同的选项来实现安全性。

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

如果在主机上实现SSL,假设您使用的是以http为中心的绑定,则客户端不需要任何加密功能,因为一旦您拥有主机,WCF软件将负责处理和客户端软件配置正确。实际上,您的WCF客户端应用程序将像浏览器一样运行,将所有讨厌的证书内容交给他们。

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

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