2013-07-19 33 views
1

我已经阅读了许多(如果不是全部的话)对以前关于同一主题的问题的解答,但问题本身并不完全关于我的案例。在移动设备上存储API密钥

我有一台OAuth 2.0服务器正在运行。它有一个端点为用户提供访问令牌。请求访问令牌的程序和网站可能不属于我,也就是说,我可能会为网站用户添加一个工具,并将其定位到相同或相邻的网站上,我的用户可能会创建一个应用程序并使用其API密钥请求访问用户的数据。现在我正在开发将操作用户数据的应用程序。我知道在设备上存储API密钥并不是一个好的解决方案。我已阅读了有关创建端点的信息,我通过该应用程序直接向端点发出请求,然后端点发出API请求,但端点必须与OAuth服务器存在于同一台主机上,并可能位于服务器上。

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

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

回答

1

您的关注点是现货。您的API秘密不应该存储在设备上。

但是,我不确定为什么你会关心构建一个单独的端点,因为OAuth 2有这些用例的授权流程。

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

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

如果这个安全级别是不可接受的,那么你可以看看在应用程序的不同部分分割你的API秘密,然后在运行时在你的应用程序中组装它。

+0

谢谢你的链接。 – Xeos