首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >什么是API密钥?

什么是API密钥?
EN

Webmasters Stack Exchange用户
提问于 2021-09-21 06:02:08
回答 7查看 3.4K关注 0票数 12

当我们通过用户帐户登录到服务时,我们通常需要提供电子邮件和密码(有时还需要用户名)。

但是,当一个网站的API认证到另一个网站的API (自动)时,就不能使用个人电子邮件地址,因为它不是人在进行身份验证。

API键是否是某种“机器用户名”,取代了典型的(人)用户名?

EN

回答 7

Webmasters Stack Exchange用户

发布于 2021-09-21 07:32:46

我能找到的API密钥的最好描述来自于这篇文章来自阿佩菲

在处理API时,您可能会遇到名为API键的东西。它们有点像密码,让API来确认你的身份。一旦API知道您是合法的,您就可以通过并使用API的全部特性。API密钥示例: 1f9ba190-c513-471b-a573-b8d008bb52fe通常,API密钥是用于访问REST的单个令牌。在计算世界中,令牌是表示执行操作的权限的对象。通过将两个和两个组合在一起,我们可以推断出API密钥是一种赋予我们访问API的权限的代码。

因此,密钥提取(双关意)是指在对API进行身份验证时通常使用的API密钥,而不是用户名/密码组合。之所以使用它们,是因为与用户名/pass组合相比:

  1. 您可以独立于您通常的登录细节来旋转它们。因此,如果您的API密钥被破坏,您可以登录到该服务并生成一个新的API密钥。
  2. 有些公司允许您创建多个API密钥,每个密钥在您的帐户中具有不同的权限级别。这减少了攻击的表面积,因为您可以生成一个仅限于只读帐户访问的密钥。
  3. 因为对于某些项目,您的API密钥需要存储在您自己的服务器上才有用,因此它为您提供了额外的安全层,因为您不需要在那里存储您的用户名和密码。
票数 9
EN

Webmasters Stack Exchange用户

发布于 2021-09-21 12:16:02

API密钥非常类似于密码:它们是允许访问的秘密。

然而,有一些不同之处:

  • 密码是为人类,API密钥是用于程序或脚本的自动访问。
  • 密码通常短而简单,足以令人难忘。API密钥被设计为供计算机使用,因此通常比密码更长、更复杂和更安全。
  • 密码通常由用户生成。API密钥通常由服务器生成,然后交给用户。服务器生成的API密钥保证是长的和随机的。用户选择的API键不会是。
  • 密码几乎总是与用户名一起使用。API密钥有时与用户名一起使用,但通常将用户信息嵌入其中。
  • 密码通常允许完全访问。API密钥通常是为了访问用户可以访问的部分内容而量身定做的,因此,如果这些密钥被破坏,所造成的破坏量是有限的。
  • 用户在任何给定时间都有一个站点密码,但可能有几个API密钥,这些密钥允许不同级别的编程访问。
  • 可以更改密码,但通常需要撤销API密钥或使其失效,并颁发新的API密钥。
票数 5
EN

Webmasters Stack Exchange用户

发布于 2021-09-22 12:58:48

术语"API键“被重载为两个非常不同的含义。在你的例子中,还不完全清楚,但是

当一个网站的API自动登录到另一个网站的API时

(强调我的)我想您是在谈论从服务器端登录,在这种情况下,Maximillian和Stephen的答案是正确的。

然而,还有另一个,可能是更老、更常见的"API密钥“定义,它根本不是密钥,因为它不是秘密的。这似乎就是纳特在说的。

例如,如果您想从web应用程序的客户端,或者从运行在用户个人电脑或电话上的应用程序中访问某个第三方的基于web的API,那么任何“密钥”都是您寄给用户的东西,他们可以将其用于他们想要的任何目的,而不仅仅是您想要的目的。这个"API密钥“可能只用于访问非特权接口(比如Google ),也可能伴随着特定于用户(而不是您的应用程序)的API提供者登录。

如果这种"API密钥“不能具有任何保密性,并且没有提供有意义的访问控制,那么它为什么要使用这种密钥呢?我有一个关于这个主题的Twitter线程,我把它描述为“围墙花园里的低等级问责制”。基本上,API提供程序使任何想要与其服务集成的人都获得一个标识符,以便所有与其应用程序相关的使用都可以被跟踪、监视以避免误用,并在API提供程序突然决定不喜欢应用程序所做的工作时停止使用。是的,技术熟练的人可以从应用程序中提取标识符,并将其用于自己的目的,但其规模预计将受到限制;如果他们使用其他人的API密钥发布应用程序,有明确的公开证据表明他们这样做了,而且他们可能面临法律问题。

不幸的是,这有两个非常坏的副作用:

  1. 对于使用API的程序员来说,称它为“键”是非常令人困惑的,尤其是当您告诉他们将其嵌入到客户端应用程序代码中时。这直接导致程序员将实际凭证(另一种"API键“)放入客户端代码中,因为他们不理解两者之间的区别。
  2. 由于API提供者坚持应用程序开发人员将密钥保持为私有(尽管这是不可能的),并且只用于一个应用程序,因此它将开源应用程序从提供源代码的表单中锁定出来,而无需用户获取自己的密钥就可以“开箱即用”。
票数 4
EN
页面原文内容由Webmasters Stack Exchange提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://webmasters.stackexchange.com/questions/136922

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档