Rest .NETWebAPI。使用用户名和密码对客户端进行身份验证,而不使用基本身份验证

Rest .NETWebAPI。使用用户名和密码对客户端进行身份验证,而不使用基本身份验证,rest,asp.net-web-api,restful-authentication,Rest,Asp.net Web Api,Restful Authentication,我需要你的帮助 我用.NETWebAPI开发了一些REST服务 这些服务必须使用用户名和密码对客户端进行身份验证 我在Internet上找到的解决方案是基本身份验证 最大的问题是我不能使用SSL来保护通信。我没有HTTPS 在没有SSL的情况下使用基本身份验证不是一个好的解决方案 我无法在Internet上搜索到一个解决方案,该解决方案可以使用用户名和密码通过http对客户端进行身份验证 你能帮我吗 总结:我需要使用用户名和密码在Web.API中对用户进行身份验证。我不能使用SSL。我的通信是通

我需要你的帮助

我用.NETWebAPI开发了一些REST服务

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

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

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

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

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

你能帮我吗

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


谢谢

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


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


这将在不使用SSL的情况下为您提供一些保护,因为它使用散列;然而,在所有这些方法都被充分阅读和理解之前,我不会真正提倡它。

基本上,你不能这样做

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


如果您不关心所有这些功能,为什么还要麻烦安全身份验证呢?

没有SSL,basic不安全,但digest也不安全,因为中间人攻击。我建议您使用一些基于公钥/私钥的方法,如HMAC或paul在hash+salt中所说的加密

如何将其与Web.API一起使用?如何在非安全网络(如HTTP)上向服务发送客户端凭据?使用类似MD5的内容在客户端对用户凭据进行salt+哈希,以确保它们在跨网络传输时的安全。您可以使用HMAC身份验证,请在此处签入:我不同意此答案。有一些经过充分验证的方法非常不安全,比如SSL,可以在不使用SSL的情况下对消息的某些部分进行加密。