认证和REST

4
我已经实现了一个Windows服务。我想通过REST来扩展一些功能。我使用了WCF REST特性进行了实现,并且它能正常工作。目前为止一切都很好。
我的问题是安全性和认证。据我所知,没有一种“唯一的”认证方式,我阅读了几篇文章…在这里和其他论坛、博客上也有相关内容,但我完全迷失了方向。我阅读了关于SSL、OAUTH、HMAC等方面的优缺点。
我需要的功能是以某种方式验证用户,用户名/密码对于我来说是最好的方式。
这些用户来自互联网浏览器,但以后我计划将来还会有更多的客户端,比如Android或iPhone应用程序。
那么,你认为REST协议中验证用户的最佳(和最简单的)方式是什么?
谢谢!
.Net4/WCF/Visual Studio 2010

值得一读的是这个SO问题:https://dev59.com/h3RB5IYBdhLWcg3w9b19的安全性。 - Russ Clarke
谢谢,我已经早先阅读过了,但是我没有得到清晰明了的答案。 - Tom
1
Pablo的博客文章有一个很好的例子:http://weblogs.asp.net/cibrax/archive/2009/03/20/custom-basic-authentication-for-restful-services.aspx - 我刚刚下载了演示项目,看起来非常清晰,它提供了一种实现自定义成员提供程序的方法,您可以根据自己的数据库进行调整,并通过基本身份验证接受用户凭据:http://en.wikipedia.org/wiki/Basic_access_authentication - Russ Clarke
需要IIS吗?我的应用是一个Windows服务,我不打算在这个项目中使用IIS。 - Tom
啊,好的,抱歉 - 我没有那方面的经验;我只需要通过IIS成员提供程序提供身份验证。 - Russ Clarke
显示剩余3条评论
3个回答

1

那么,您认为用于REST协议的用户身份验证的最佳(和最简单的)方式是什么?

最简单的RESTful身份验证方案肯定是HTTP基本身份验证。当然,它并不是非常安全,但可以作为第一步。

在服务器端,您可以通过设置HTTP反向代理(Apache,Cherokee或任何其他)来实现零代码。

在客户端,大多数情况下也是零代码(使用Java,.Net,jQuery.ajax,普通XMLHttpRequest等)。


你为什么说它不是很安全? - Tom
1
通过HTTP进行基本身份验证意味着以明文形式发送登录名和密码。但是,为了防止窃听,您可以将基本身份验证与HTTPS混合使用。 - Aurélien Bénel

0

根据定义,任何身份验证方式都需要每个用户的状态。即使该状态以密码或API密钥的形式存在。但是,我使用过的每个REST API都要求API密钥,因此这部分REST被忽略了。也许在安全性成为问题时,REST并不是最佳选择。浏览器很擅长跟踪会话ID,并且使用会话ID比使用API密钥更安全,因为值会过期。使用会话ID是一种非常安全和经过验证的设计模式,尽管它“不太符合RESTful”。但是,开销要求非常小。


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接