RESTful API 密钥建议 [已关闭]

问题描述 投票:0回答:2

我正在寻找有关 RESTful API 设计的建议。我已经阅读了很多有关 REST API 方案、身份验证/授权方式等的内容。我无法决定的是我是否真的需要使用 API 密钥。据我了解,如果您想监控使用情况、限制每个应用程序的请求以及统计数据,那么使用 API 密钥非常有用。

我想要避免的是必须创建额外的 Web 界面来添加/管理/删除应用程序以及添加/删除应用程序管理员。也许有一种更简单的方法来进行 API 密钥分发。或者我真的需要那些吗?我的意思是,监控和限制使用很酷,听起来很有用,但它值得我为密钥分发做其他事情吗?

更具体地说,我的网站类似于 Slideshare 和 Scribd。我想为 API 提供对其功能的访问权限,例如添加和管理文档以及获取有关用户的信息。例如,要上传文件,您需要以某种方式进行身份验证并使用特定帐户来执行此操作。在这种情况下,是否需要 API 密钥,或者我可以坚持对用户进行身份验证?

那么您认为我处理 API 密钥的最佳方式是什么?或者我应该使用它们吗?有没有更聪明的方法来分发(创建、删除)密钥?

rest authentication api-design api-key
2个回答
4
投票

你知道 mashery http://www.mashery.com/ 和programmableweb 吗?

也许有一些有用的资源 http://www.mashery.com/solution/collegeboard

http://www.3scale.net/

我会使用 api 密钥进行统计和限制,但也会像 google 一样提供一些没有 api 密钥的服务

您可以使用以下解决方案轻松创建 API
休息者 http://luracast.com/products/restler/
Frapi http://getfrapi.com/
数据罐http://thedatatank.com/
服务(仅适用于 Drupal)http://drupal.org/project/services

还有更多:http://blog.programmableweb.com/2011/09/23/short-list-of-restful-api-frameworks-for-php/


2
投票

我也在上面的帖子中回答了 - 但空间不足。作为免责声明,我为 3scale (http://www.3scale.net) 工作,因此您可能希望根据该内容解析我的回复:)。

您问题的答案实际上取决于您的 API 公开的资源以及您想要跟踪/限制的资源。听起来大多数功能都与某种用户帐户绑定,但可以由第三方实现。

在这种情况下,最有用的模式可能是为每个调用 API 的应用程序以及用户凭据提供一个标识符(公共或秘密)。应用程序标识符可以是 APIKey 甚至只是一个名称(例如“tweetdeck”)。如果您最终拥有大量第三方应用程序,那么跟踪这些标识符(这意味着至少有一种发布它们的方式)并了解每个应用程序的创建者+能够关闭它们(如果只是关闭它们)可能会很有用。打倒那些滥用你的用户群的人)。您可能还想对每个用户和应用程序可以在 API 上生成的流量限制进行评级,因此拥有标识符再次很有用。

此外,如果您对用户进行身份验证,但允许第三方编写您的用户使用的应用程序,请务必考虑使用 oAuth (http://www.oauth.net) 以避免流氓代码/网站捕获您的用户密码。

您在上面提到您不热衷于外部服务 - 没问题,3scale 的工作原理是实际执行系统本地的所有 API 身份验证(例如使用代码插件之一:https://support.3scale.net/库或像 Varnish 这样的代理:https://github.com/3scale/libvmod-3scale/),然后在云中进行跟踪。显然它并不适合所有用例,但可以为您提供一堆开箱即用的有用工具。

© www.soinside.com 2019 - 2024. All rights reserved.