【发布时间】:2010-11-16 23:03:22
【问题描述】:
我正在开发一个社交网站。该服务将通过各种媒介提供,例如:网络、iPhone、Facebook 应用程序等。
我对这个应用程序的想法是让所有这些属性与一个用于获取和保存数据的中心点交互:一个 API。然后我的各种应用程序将与这个 API 交互,发送一个GET 请求来获取一些数据;一个POST 请求提交一些数据; DELETE 请求等等。
此 API 可通过网络访问,因此我需要一种方法来仅对列入白名单的应用程序进行身份验证。此 API 将永远不可用于第三方与第三方交互或构建第三方应用程序;它只是为了方便我的应用程序,这样我就可以在各种平台上削减重新编码解决方案,只关注逻辑(本质上是控制器)。
那么,OAuth 是否适合作为上述场景的认证方式?
我对 OAuth 的了解不是很好,但如果它被认为是一个可行的解决方案,那么我显然会在实施之前阅读它。但据我所知,它适用于代币。消费者(例如,我的网站)将从应用程序(本例中的 API)请求令牌,然后应用程序将返回一个令牌以在后续请求中使用。什么的。
当请求进入我的应用程序时,我是否能够根据请求应用程序接受/拒绝请求? IE。我可以拒绝访问不属于我自己的应用程序吗?如何区分应用程序?我是否保留了 IP 地址或 URL 的白名单,并在传入请求时进行比较?
任何关于上述内容的帮助将不胜感激。
【问题讨论】:
-
您是否考虑过实现消息验证码 (MAC)?这就是我现在看到的大多数 API 都可以使用的(包括我的)。通过适当的实现,您可以根据请求的应用程序接受/拒绝请求,保留请求信息等。