使用API​​密钥保护我的API

Kos*_*rak 12 api authorization

我正在构建自己的API,正在使用它:

1)Android App 2)桌面应用程序

我的一个网址是:http://api.chatapp.info/order_api/files/getbeers.php,我的用户通过JSON从我的数据库中获取数据.我最近想到用API Key创建身份验证.

关于如何做的任何想法?或者我必须做一些像http://api.chatapp.info/order_api/files/getbeers.php?api_key=这样的事情,然后将GET方法与存储在我数据库中的一些密钥进行比较?

有任何想法吗?

hec*_*ckj 3

正如 @mike 提到的,OAuth 是复杂的 API,更重要的是需要在某处运行第三个服务端点来提供访问的身份验证/授权。

一种认为您绝对不想做的事情是在 URL 中包含 API 密钥。这很容易被代理重播和/或欺骗和识别并在日志文件中捕获。更好的解决方案是将 API 密钥作为附加 HTTP 标头包含在请求中,并在 API 端点中查找该特定值。

对于您建议的简单用例,您可能会发现值得使用您在 Android 应用程序和 API 端点之间作为共享秘密保存的密钥来对 API 调用进行身份验证。如果您采取这种方式,则不容易更改,如果受到损害,则意味着真正的 PITA 需要启用并就位新密钥。

如果您使用“共享秘密”,那么我建议让用户相对容易(或至少有一些 UI)更新该密钥,以防它被泄露。我假设您可以相当轻松地更新您的网络服务。此过程不像 OAuth 或 OAuth2 那样安全,但实施起来肯定更简单、更快,同时仍然提供合理的“安全”级别(本例中的安全意味着“允许您访问此 API”)。