【发布时间】:2014-07-09 06:59:39
【问题描述】:
我们正在构建一个 REST API,供我们自己的移动应用以及其他应用使用。我们希望通过似乎符合 oAuths Client Credentials Grant 定义的 API 密钥来防止它被公开访问。
某些 API 端点,例如那些会修改用户资源的端点,需要对用户进行身份验证,这似乎符合 Resource Owner Password Credentials Grant 定义。
这个问题基本上总结了与下面链接的相同场景,但没有询问实际实现可能是什么样子的任何示例:
这是一个很难提出的问题。我已经查看了尽可能多的类似问题,但似乎都没有真正回答以下问题:
这样的流程将如何运作?除了在某些端点上为用户请求/传递 access_token 之外,客户端是否会在每个请求中传递一个 API 密钥参数/标头?
就源代码(尤其是 ruby/rails)而言,在这个特定用例的野外是否有任何可公开访问的示例?
另外,我并不严格依赖 oAuth,因此请告诉我是否有其他安全且经过验证的方法可以执行相同类型的操作。
【问题讨论】:
-
嗨,马克,我遇到了和你一样的问题。您链接到的问题得出结论“保护 API 免受滥用的最佳选择是实施某种使用监控”。您确实可以在每个响应中包含客户端密码,但不幸的是,任何人都可以查看您的应用程序并找到它。你有没有遇到过很好的解决方案?
-
我有同样的问题,在我看来,oauth2 没有提供任何解决方案。 oauth2 草案不是针对移动本机客户端编写的,并且使用资源所有者密码凭据,您必须信任不使用 3rd 方客户端的用户。
-
@Rengers 并非如此,我倾向于同意 alex 的观点,即 oauth 并没有真正为这种特殊情况提供解决方案。似乎每个人都倾向于推出自己的解决方案。
标签: api rest authentication oauth