在设计REST API或服务时,是否有处理安全性(身份验证、授权、身份管理)的最佳实践?

在构建SOAPAPI时,您可以将WS-Security作为指南,并且有许多关于该主题的文献。我发现关于保护REST端点的信息较少。

虽然我理解REST故意没有类似于WS-*的规范,但我希望已经出现了最佳实践或推荐的模式。

如有任何讨论或相关文件的链接,我们将不胜感激。如果重要的话,我们将使用WCF和POX/JSON序列化消息,用于使用.NET Framework v3.5构建的REST API/服务。


当前回答

我使用了OAuth几次,也使用了一些其他方法(BASIC/DIGEST)。我衷心建议OAuth。以下链接是我见过的关于使用OAuth的最佳教程:

http://hueniverse.com/oauth/guide/

其他回答

除了HTTP之外,没有其他REST标准。已经建立了REST服务。我建议你看一眼它们,感受一下它们是如何工作的。

例如,在开发自己的服务时,我们借鉴了亚马逊S3 REST服务的许多想法。但我们选择不使用基于请求签名的更高级的安全模型。更简单的方法是通过SSL进行HTTP基本身份验证。你必须决定什么最适合你的情况。

此外,我强烈推荐O'reilly的《RESTful Web Services》一书。它解释了核心概念,并提供了一些最佳实践。您通常可以使用他们提供的模型并将其映射到您自己的应用程序。

我使用了OAuth几次,也使用了一些其他方法(BASIC/DIGEST)。我衷心建议OAuth。以下链接是我见过的关于使用OAuth的最佳教程:

http://hueniverse.com/oauth/guide/

我搜索了很多关于restful ws安全性的信息,最后我们通过cookie在客户端到服务器之间使用令牌来验证请求。我使用spring安全性来授权服务中的请求,因为我必须根据DB中已经存在的指定安全策略来验证和授权每个请求。

我遇到过的关于REST安全性的最好的帖子之一是1 RainDrop。MySpace API也使用OAuth进行安全保护,您可以完全访问RestChess代码中的自定义频道,我对此进行了大量探索。这是在Mix演示的,你可以在这里找到帖子。

OWASP(开放Web应用程序安全项目)有一些涉及Web应用程序开发各个方面的备忘单。本项目是非常有价值和可靠的信息来源。关于REST服务,您可以检查:https://www.owasp.org/index.php/REST_Security_Cheat_Sheet