在简单Web服务中保护用户名和密码(HTTP) - C#

时间:2015-03-27 08:37:21

标签: c# wcf security authentication oauth

我正在开发一个其余的WCF Web服务,我的客户端将使用HTTP调用该服务。将使用用户名和密码(基本身份验证)对用户进行身份验证 我脑子里有以下问题。

1。如何保护用户名和密码? 在互联网上搜索时,许多人建议使用HTTPS / OAUTH / OPENID。我觉得以下是使用任何此类

的冲突
  • OAUTH / OPENID->这需要第三方对我的用户进行身份验证。如果我只在我的系统中存储用户详细信息怎么办?无论如何,我是否可以在这样的功能中实现oAuth?基于我的假设。 OAuth使用Token对用户进行身份验证,这里可以避免中间人攻击的方式。如果攻击者获得令牌,或者如果他获得整个URL,该怎么办?你能向服务器发出请求吗?
  • HTTPS:基于互联网上的许多评论,这是最好的。我很确定HTTPS会保护客户端和服务器之间的数据传输,但我想知道它是否也保护了URL(我们存储用户名和密码的位置)。??

1 个答案:

答案 0 :(得分:0)

避免中间人攻击的最佳方法是使用带HTTPS的服务器并在客户端验证证书。如果您使用浏览器作为客户端,则会自动为您完成此操作。

无论您是否通过用户名和密码或持有令牌,您都需要使用HTTPS来防止他们被同一网络上的任何人窃取。

由于我已经描述过here的多种原因,在每个请求中发送密码都是一个坏主意。如果您使用的是SOAP服务,我建议您考虑使用承载令牌,以防您的服务是WCF REST服务或SAML保护绑定。

您没有提及您的客户端是Web应用程序还是本机客户端,或者该服务是在Internet上还是在企业防火墙内公开。所有这些因素都会影响安全方面的决策。

OAuth不是唯一基于令牌的身份验证机制。对于企业应用程序,您可以查看WS-Federation / WS-Trust和ADFS。 此外,OAuth授权服务器不必是外部参与方,您可以将授权服务器部署为应用程序的一部分。