限制对RESTful资源的访问

时间:2011-07-27 17:19:39

标签: security rest

在为应用程序设计REST API时,某些服务应该是公共的,而其他服务最好保持私有(即不可公开访问)。 OAuth由服务应用程序使用。

需要考虑哪些措施?

记住一些想法:

  1. 在混淆的URI下发布私人资源。
  2. 需要特殊的访问密钥。 (仅为授权客户所知)。

2 个答案:

答案 0 :(得分:-1)

最具扩展性的方法是设计网址,以便中介人知道哪些资源可供所有人使用,哪些只适用于特定用户。

然后,代理或servlet过滤器或任何适合您当前需求的过滤器可以执行授权,阻止所有未经授权的请求。 实际的服务现在可以盲目地信任和服务所有到达它的请求。

分离关注点和所有这些。

示例:

未经身份验证的请求可以到达:

/myapi/public

使用用户名“joe”验证的请求也可以达到:

/myapi/personal/joe

401 Unauthorized:

/myapi/personal/anything_but_joe 

确保/ myapi / personal / otheruser和/ myapi / personal / nonexistentuser返回无法区分的响应。

答案 1 :(得分:-1)

任何需要保护并受限于特定受众群体的资源都需要具备适当的访问控制(基本上就是您在第2点中所讨论的内容)。作为指南,请参考Twitter等成功服务的API,您将始终找到涉及的令牌。

混淆永远不可接受 - 这只是security through obscurity并且从根本上是有缺陷的。仔细阅读OWASP Top 10的一部分failure to restrict URL access。相同的规则适用于任何资源,无论它们是RESTful还是其他。