Answers:
API密钥的“确切”用途在很大程度上取决于谁发布它,以及所使用的服务是什么。但是,总的来说,API密钥是赋予某种形式的秘密令牌的名称,该令牌与Web服务(或类似)请求一起提交,以标识请求的来源。密钥可以包含在请求内容的某些摘要中,以进一步验证来源并防止篡改值。
通常,如果您可以肯定地识别请求的来源,则它可以作为身份验证的一种形式,这可以导致访问控制。例如,您可以根据谁执行请求来限制对某些API操作的访问。对于从销售此类服务中获利的公司而言,这也是一种跟踪谁将其用于计费目的的方式。此外,通过阻塞密钥,可以在请求量过高的情况下部分防止滥用。
通常,如果您同时具有公共和私有API密钥,则表明密钥本身就是以某种形式的非对称加密或相关的数字签名使用的传统公共/私有密钥对。这些是更安全的技术,用于可靠地标识请求的来源,并另外用于保护请求的内容不被监听(除了篡改外)。
一般而言:
API密钥仅标识您。
如果存在公共/私有区别,则可以将公共密钥分配给其他人,以允许他们从api中获取有关您的信息的一些子集。私钥仅供您使用,并提供对所有数据的访问。
看起来很多人都使用API密钥作为安全解决方案。底线是:切勿将API密钥视为秘密,而不是视为秘密。不论是否使用https,任何可以读取请求的人都可以看到API密钥,并且可以进行他们想要的任何调用。即使与ssl一起使用,API密钥也应作为“用户”标识符,因为它不是一个完整的安全解决方案。
Eugene Osovetsky的链接提供了更好的描述:在使用大多数API时,为什么它们要求两种身份验证类型,即密钥和密钥? 或检查http://nordicapis.com/why-api-keys-are-not-enough/
API密钥是唯一的值,当该用户被接受为该服务的用户时,该值便分配给该用户。
该服务维护所有颁发的密钥,并在每次请求时对其进行检查。
通过在请求处查看提供的密钥,服务将检查是否是有效密钥,以决定是否授予用户访问权限。
以这种方式考虑,“公共API密钥”类似于您的数据库用作验证服务器登录名的用户名。这样,“专用API密钥”将类似于密码。通过使用此方法的站点/数据库,可以在第三方/验证服务器上维护安全性,以确保发布或编辑站点/数据库的真实请求。
API字符串只是您的站点/数据库与验证服务器联系的登录URL。