RESTAPI和API密钥

RESTAPI和API密钥,api,authentication,Api,Authentication,请有人告诉我如何使用api密钥,它有什么好处 关于这一点,我搜索了很多,得到了不同的、相互矛盾的答案。有人说,API密钥是保密的,它永远不会作为通信的一部分发送,而其他人则在不加密的情况下将其发送到客户端。客户的签名是什么?他如何生成它,服务器可以用它做什么?为什么要用api密钥蒙骗而不是使用好的旧用户名密码对?有人能详细解释一下客户端(Android设备)和服务器(php api)之间的通信情况吗 如果有任何好的教程、代码示例和初学者解释,我将不胜感激。看看这个 研究一个关于Oauth的l

请有人告诉我如何使用api密钥,它有什么好处

关于这一点,我搜索了很多,得到了不同的、相互矛盾的答案。有人说,API密钥是保密的,它永远不会作为通信的一部分发送,而其他人则在不加密的情况下将其发送到客户端。客户的签名是什么?他如何生成它,服务器可以用它做什么?为什么要用api密钥蒙骗而不是使用好的旧用户名密码对?有人能详细解释一下客户端(Android设备)和服务器(php api)之间的通信情况吗

如果有任何好的教程、代码示例和初学者解释,我将不胜感激。

看看这个


研究一个关于Oauth的lil,API认证是一个复杂的话题。下面我将尽力解释问题的一部分:为什么API密钥比用户名/密码更好

我们开始吧

在构建(或使用API)时,开发人员经常问的一个问题是“为什么此服务需要API密钥而不是我的用户名和密码?”这是一个很好的问题

首先,让我们谈谈API键通常是什么

API键通常是随机生成的字母和数字字符串。此外,API密钥通常分为两部分:ID和机密。例如,如果您使用的是web服务,您可能有两个API键,如下所示:

  • API_KEY_ID=kzjbOg3iOm4k4MRpBss76yxlZSPJtoOPaqxirsfX
  • API_KEY_SECRET=A8FnQWM7RpgGjU3sZjOUgMIq5t8mvAhQES9iE30S
您可以将API密钥ID视为用户名。这是一个全局唯一标识符,允许API服务查找您的帐户

您可以将API密钥机密视为密码。这是一个密码,当与正确的API密钥ID匹配时,将授予您访问相关API服务的权限

您不想使用用户名和密码对API进行身份验证的主要原因是:

  • 即使API是通过SSL提供的,也存在许多可能危害您的凭据的漏洞。如果您使用用户名/密码登录API服务,并且攻击者获取了这些凭据,则他们可以访问您的整个帐户

  • 如果您使用用户名/密码对API进行身份验证,那么如果您的一个服务器/API客户端受到破坏,会发生什么情况?这意味着您需要重置用户名/密码,并为使用它的所有客户端更新它。这可能非常耗时,而且成本高昂

  • 通过使用用户名/密码,您通常将自己限制在某种类型的API使用上。通过使用API密钥对,您可以将API凭据分离到不同的访问级别(可能在密钥对上只能访问某些数据,而另一个可以访问其他类型的数据)

一般来说,API密钥对是一个更好的主意。除了明显的安全优势外,它们还有其他用途:

  • 如果API密钥对泄漏,您通常可以创建/循环API密钥对,而无需更新您拥有的每个客户端

  • 您可以使用API密钥对为API提供子帐户功能


希望有帮助

你到底想做什么?有一个Android应用程序可以与API进行通信。clinet可以发送GET和PUT请求来请求和修改服务器上的资源。我想对用户进行身份验证,看看他们是否已登录,以及他们是否有编辑资源的权限