【问题标题】:.NET Web API. Authenticate clients with username and password without using Basic Authentication.NET Web API。使用用户名和密码对客户端进行身份验证,而不使用基本身份验证
【发布时间】:2013-01-20 12:35:01
【问题描述】:

我需要你的帮助。

我使用 .NET Web API 开发了一些 REST 服务。

这些服务必须使用用户名和密码对客户端进行身份验证。

我在 Internet 上找到的解决方案是“基本身份验证”。

最大的问题是我不能使用 SSL 来保护通信。我没有 HTTPS。

使用没有 SSL 的基本身份验证不是一个好的解决方案。

我无法在 Internet 上搜索找到可以使用用户名和密码通过 http 对客户端进行身份验证的解决方案。

你能帮帮我吗?

总结一下,我需要使用用户名和密码在 Web.API 中对用户进行身份验证。我不能使用 SSL。我的通讯是在 HTTP 上。

谢谢!!!

【问题讨论】:

标签: rest asp.net-web-api restful-authentication


【解决方案1】:

您可以使用 ASP.NET 成员资格提供程序:

http://msdn.microsoft.com/en-us/library/yh26yfzy(v=vs.100).aspx

【讨论】:

  • 如何将它与 Web.API 一起使用?如何将客户端凭据发送到 HTTP 等非安全网络上的服务?
  • salt + 使用 MD5 之类的东西对用户凭据客户端进行哈希处理,以确保他们在通过网络时的安全
【解决方案2】:

基本上 - 你不能那样做。

当然,有些方案不会通过线路以明文形式传输凭据 - 但它不仅仅是关于凭据的。所有的数据都以明文形式通过网络传输,您没有服务器的身份验证、没有机密性、没有完整性保护、没有重放保护等……

如果您不关心所有这些功能 - 为什么还要使用(安全)身份验证?

【讨论】:

  • 我不同意这个答案。有一些经过充分验证的方法与 SSL 一样不安全,可以在不使用 SSL 的情况下加密部分消息。
【解决方案3】:

我知道的唯一其他常见的用户名+密码身份验证方法是digest access authentication。有一个博客 here 展示了 WebApi 的示例。

这将在没有 SSL 的情况下为您提供一些保护,因为它使用散列;但是,在所有完全阅读并理解这种方法的disadvantages 之前,我不会真正提倡它。

【讨论】:

    【解决方案4】:

    没有 SSL,basic 不安全,但由于中间人攻击,digest 也不安全。我建议您使用一些基于公钥/私钥的方法,例如 HMAC 或像保罗所说的使用哈希 + 盐进行加密。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-13
      • 2014-04-01
      • 1970-01-01
      • 2017-09-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-10
      相关资源
      最近更新 更多