如何获取 API Key 来访问服务预授权?

Posted

技术标签:

【中文标题】如何获取 API Key 来访问服务预授权?【英文标题】:How do you get an API Key to access a service pre-authorization? 【发布时间】:2016-05-05 07:53:45 【问题描述】:

所以我有一个应用程序。

移动设备或 javascript。任何。视窗、苹果、安卓。我有一个日志记录 API。它有一个 API 密钥。该应用程序需要在记录任何内容之前提供该 API 密钥。我需要记录的一件事是登录失败!出于这个原因,我必须在用户登录之前拥有该 API 密钥。我将它存储在哪里?

我无法将 API 密钥保留在应用程序中,例如设置文件或源中,因为用户可以使用这些密钥。我不能用 OAuth2 调用服务器,因为用户没有经过身份验证,所以我不能做哈希。我无法将其存储在钥匙串中,因为 API 密钥在下载时仍会存在于 app bundle 中,以便将其存储在钥匙串中。

那么,我把它放在哪里?

【问题讨论】:

日志记录是在个人级别完成的,还是只是系统日志?如果是后者,为什么不使用某种公钥来进行安全连接和日志记录? 这是一个第三方的日志服务。如果我控制服务,那就没问题了。 【参考方案1】:

您无需对用户进行身份验证即可让客户端向服务器发出安全请求以获取通用 API 密钥。最简单(不安全)的方法是在您的服务器中构建一个简单的 GET RESTful 端点(例如:http://www.sempf-overflow.com/logging/key),其响应中唯一的内容就是您的 API 密钥。一旦你有了它,你就可以考虑如何确保它的安全。

您可以阅读以下内容以了解更多信息以及不同解决方案的权衡:

http://www.androidauthority.com/how-to-hide-your-api-key-in-android-600583/ Best Practice for storing private API keys in Android

【讨论】:

所以这将是一个会话密钥,如果成功登录,它会与用户 ID 配对? 第二个链接非常好 - 基本答案是 - 你不能。很好,谢谢。

以上是关于如何获取 API Key 来访问服务预授权?的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET Web API 和 OpenID Connect:如何从授权码中获取访问令牌

如何获取微信开放平台的预授权码

如何获取华为运动健康服务授权码并调用Rest API访问数据?

如何获取微信开放平台的预授权码

如何获取访问服务器的域名

如何使用来自另一个服务的令牌授权其余 API [关闭]