【发布时间】:2011-10-14 11:32:16
【问题描述】:
在为应用程序设计 REST API 时,一些服务应该是公开的,而其他服务最好保持私有(即不可公开访问)。服务应用程序使用 OAuth。
需要考虑哪些措施?
一些想法:
- 在混淆的 URI 下发布私有资源。
- 需要特殊的访问密钥。 (只有授权客户知道)。
【问题讨论】:
在为应用程序设计 REST API 时,一些服务应该是公开的,而其他服务最好保持私有(即不可公开访问)。服务应用程序使用 OAuth。
需要考虑哪些措施?
一些想法:
【问题讨论】:
任何需要保护并仅限于特定受众群体的资源都需要有适当的访问控制(基本上就是您在第 2 点中所说的)。作为指南,请参考 Twitter 等成功服务的 API,您总能找到相关的令牌。
混淆是绝对不能接受的——这只是security through obscurity 并且从根本上是有缺陷的。仔细阅读 OWASP Top 10 的部分内容,failure to restrict URL access。相同的规则适用于任何资源,无论它们是 RESTful 还是其他。
【讨论】:
最具可扩展性的方式是设计 URL,这样中间人就可以轻松知道哪些资源可供所有人使用,哪些资源仅供特定用户使用。
然后代理或 servlet 过滤器或任何适合您当前需求的东西都可以进行授权,阻止所有未经授权的请求。 实际的服务现在可以盲目地信任和服务所有到达它的请求。
关注点分离等等。
例子:
未经身份验证的请求可以到达:
/myapi/public
使用用户名“joe”认证的请求也可以到达:
/myapi/personal/joe
401 未经授权:
/myapi/personal/anything_but_joe
确保 /myapi/personal/otheruser 和 /myapi/personal/nonexistentuser 返回无法区分的响应。
【讨论】: