繁体   English   中英

在移动设备上存储API密钥

[英]Storing API key on mobile device

我已经阅读了许多(如果不是全部)关于同一主题的先前问题的答案,但是问题本身与我的情况不完全相同。

我正在运行OAuth 2.0服务器。 它具有向用户提供访问令牌的端点。 请求访问令牌的程序和网站可能归我所有,也可能不归我所有,换句话说,我可以为网站用户添加工具并将其定位在相同或相邻的网站上,并且我的用户可以使用其API密钥请求创建一个应用访问用户数据。 现在,我正在开发将操作用户数据的应用程序。

我意识到在设备上存储API机密不是一个好的解决方案。 我已经阅读了有关创建一个端点的信息,该端点可以直接从应用程序向其发出请求,然后端点向其发出API请求,但是该端点必须与OAuth服务器位于同一主机上,并且可能与该服务器相同。

当我控制应用程序和OAuth服务器时,是否可以授权移动应用程序访问用户数据? 我应该创建一个单独的端点吗? 我应该给它传递设备ID和/或任何其他信息吗?

PS:我知道普通的旧授权可以在这里使用,但是如果某些用户想要创建自己的移动扩展(出于安全原因当前不允许)怎么办? 另外,当前系统具有许多人可以识别的按钮,他们知道单击该按钮之后将发生什么。 使用该应用程序时,当用户看到登录对话框而不是“使用*登录”按钮时,可能会出现问题。 我真的希望有一个聪明的解决方案。

您的担忧已成为现实。 您的API机密不应存储在设备上。

但是,我不确定您为什么会担心构建单独的端点,因为OAuth 2具有针对这些用例的授权流程。

http://tools.ietf.org/html/rfc6749#section-9

在您的用例中,建议使用隐式授予流来获取访问令牌并将其存储在本地设备上。 将没有刷新令牌,并且access_token可以具有到期日期。 当然,设备上的令牌可能会遭到破坏,但损害将仅限于特定用户,而不是整个应用程序。

如果这种安全级别是不可接受的,那么您可以考虑将API Secret拆分到应用程序的不同部分,然后在运行时在应用程序中进行组装。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM