API API / app id和Web API的密钥如何相关,以及它们如何协同工作?

时间:2015-12-26 09:21:11

标签: android web-services signing

我找到了许多关于如何找到这些密钥并将它们与我的应用程序集成的教程,但没有人告诉他们如何协同工作。他们为什么需要以及他们在Web服务环境中解决的目的是什么?

我们还必须做一些事情,从密钥存储区生成一个哈希密钥并将其注册到不同的Web API。

我无法理解Web API服务对这些密钥的作用以及它们用于生成这些密钥的属性。

据我所知,我们必须在客户端存储应用程序ID,但由于安全性的原因,我们在这里没有使用密钥,因此密钥在服务器端解决了哪些要求?

我没有找到任何提供此信息的文档。

请提供任何帮助,以便我能理解这个概念。

我尝试阅读以下文档,但他们没有提供有关如何将这些文档组合在一起的任何信息。

https://developers.facebook.com/docs/facebook-login/android

Facebook API key? Same as Application ID?

https://security.stackexchange.com/questions/19989/facebook-api-app-secret-possible-misuse

1 个答案:

答案 0 :(得分:2)

这里有很多东西。有些是在客户端,有些是在服务器端。简单来说,我们可以认为它们如下。

服务器使用

应用密钥/ ID:来跟踪特定应用在一天内发出的API请求数,以便在请求数超过给定阈值时服务器可以向客户端收费。

密钥:此密钥主要由服务器用于向另一台服务器发出机密请求(即服务器到服务器通信)。例如:服务器可以使用此密钥,如果它想要change app related settings或者想要服务器上的validate access token Facebook客户端。

这就是为什么不允许在客户端存储Secret密钥的原因,因为任何人都可以反编译应用程序,找到此密钥并滥用它。

哈希密钥:我们从应用程序证书生成哈希密钥并将其存储在开发人员控制台上,以便第一个应用程序针对给定哈希进行验证,并在该API请求得到服务之后。这就是为什么我们如果两个散列键都不匹配,请在客户端看到有时无效的散列键错误。

Use of Facebook key hash?