OAuth(访问令牌)与 API 密钥

Posted

技术标签:

【中文标题】OAuth(访问令牌)与 API 密钥【英文标题】:OAuth (Access Token) Vs API Key 【发布时间】:2016-10-29 02:24:21 【问题描述】:

我遇到过很多文章,很多人建议使用 OAuth over API Key。据我了解,在 OAuth 中,我们终于获得了访问令牌,并且它的有效期为很多天。例如,QuickBooks 在线 OAuth 令牌的有效期为 6 个月。

所以,access token 就相当于 API Key。无论谁得到它,都应该像 API 密钥一样保护它。 OAuth 调用应通过 HTTPS 进行,类似于基于 API 密钥的调用。

相对于 OAuth 的另一个优势是授权。但是我们可以对 API Key 模型做同样的事情。例如,我们可以在我们的数据库中定义规则,比如这些 API 密钥 可以访问这些 API

现在,OAuth 的真正优势是什么?如果我们实现 OAuth,我们必须要求我们所有的客户在他们的服务器上安装 OAuth 支持库。这对他们和我们来说都是一项复杂的任务。而在 API Key 模型中,它是一个简单的 Web 调用,没有其他额外的库和复杂性。

我的目的只是为了更好地理解 OAuth,而不是与 API Key 模型进行比较和争论。

注意: 我不是在谈论用户必须查看和授予权限的 Google 和 LinkedIn 类型的模型。我只是在谈论我们为自己的客户提供的 API。

提前感谢您的帮助。

【问题讨论】:

我想有人已经问过这个问题***.com/questions/6767813/… 是的。所有答案的描述都在我的问题中。那为什么还要OAuth呢?这真的只对谷歌-LinkedIn那种方法有用吗?而且它对小客户群没有任何实际好处? 【参考方案1】:

仅当您想让您的服务用户允许第三方客户端应用程序访问他/她在您的服务中托管的数据而不向应用程序透露他/她的凭据(ID 和密码)时,您才需要 OAuth。

一对 API 密钥和 API 机密可以做的只是对客户端应用程序的身份验证。 如果您可以允许经过身份验证的客户端应用程序在没有得到明确同意的情况下访问用户的数据用户,您不必使用 OAuth。

【讨论】:

在没有 API 密钥和秘密的情况下使用 OAuth 怎么样? OAuth 凭据不会以某种方式与客户端 ID(api 密钥)相关吗? API 秘密是什么意思? 当您可以只拥有秘密令牌时,拥有密钥和秘密的意义何在。钥匙告诉你你是谁,秘密告诉你是不是真的。但是,如果你有秘密的唯一令牌不能同时满足这两个目的?【参考方案2】:

API 密钥用于项目/服务,而令牌用于对用户进行身份验证。遇到了一个很好的解释。 when and why to use API key

【讨论】:

以上是关于OAuth(访问令牌)与 API 密钥的主要内容,如果未能解决你的问题,请参考以下文章

无需 Oauth 令牌即可访问 Google 电子表格 API

OAuth 令牌安全性

通过 token/api 密钥保护 API

需要 OAuth 令牌的单元测试 API [关闭]

什么是访问令牌与访问令牌秘密和消费者密钥与消费者秘密

oAuth令牌认证 - 使用相同的密钥