请有人解释我如何使用api密钥以及它有什么用处。
我已经搜索了很多关于这一点,我得到了不同且相互矛盾的答案。有人说API密钥是保密的,它永远不会作为通信的一部分发送,而其他人则在没有任何加密的情况下将其发送给客户端。客户的签名是什么?他如何生成它以及可以用它做什么服务器?为什么要使用api密钥进行修改而不是使用旧的用户名密码对呢?有人可以详细解释一下客户端(Android设备)和服务器(php api)之间的通信情况。
我很感激任何好的教程,代码示例和初学者的解释。
答案 0 :(得分:8)
API身份验证的主题很复杂。下面我将尽力解释问题的一部分:为什么API密钥比用户名/密码更好?
我们走了。
在构建(或使用API)时,一个常见问题开发人员问的问题是"为什么此服务需要API密钥而不是我的用户名和密码?"这是一个很好的问题!
首先,让我们谈谈通常是什么API密钥。
API密钥通常是随机生成的字母和数字字符串。此外,API密钥通常分为两部分:ID和秘密。例如,如果您使用的是Stormpath等网络服务,则可能有两个API密钥如下所示:
您可以将API密钥ID视为用户名。这是一个全球唯一标识符,可让API服务找到您的帐户。
您可以将API密钥秘密视为密码。这是一个密码,当与正确的API密钥ID匹配时,将授予您访问相关API服务的权限。
您希望使用用户名和密码对API进行身份验证的主要原因是:
即使API是通过SSL提供的,也有许多漏洞利用可能会损害您的凭据。如果您使用用户名/密码登录API服务,并且攻击者获取这些凭据,则他们可以访问您的帐户。
如果您使用您的用户名/密码对API进行身份验证,那么如果您的某个服务器/ API客户端遭到入侵,会发生什么?这意味着您需要重置用户名/密码并为使用它的所有客户端更新它。这可能既费时又费钱。
通过使用用户名/密码,您通常会限制自己使用某种类型的API。通过使用API密钥对,您可以将API凭据分离到不同的访问级别(可能在密钥对上只能访问某些数据,而另一个可以访问其他类型的数据)。
如果API密钥对泄露,您通常可以创建/循环API密钥对,而无需更新您拥有的每个客户端。
您可以使用API密钥对为您的API提供子帐户功能。
希望有所帮助!
答案 1 :(得分:1)