我已经阅读了许多(如果不是全部)有关相同主题的先前问题的答案,但问题本身并不完全与我的情况有关。
我正在运行OAuth 2.0服务器。它有一个端点,为用户提供访问令牌。请求访问令牌的程序和网站可能拥有也可能不归我所有,换句话说,我可能会为网站用户添加工具并将其放在相同或相邻的网站上,我的用户可以创建应用程序并使用他们的API密钥请求访问用户的数据。现在我正在开发运行用户数据的应用程序。
我意识到在设备上存储API密钥不是一个好的解决方案。我已经阅读了关于创建一个我直接从应用程序发出请求的端点,然后端点发出API请求,但端点必须存在于同一主机上,并且可能必须存在于OAuth服务器上。
当我处于应用程序和OAuth服务器的控制之下时,是否有办法授权移动应用程序访问用户数据?我应该创建一个单独的终点吗?我应该传递设备ID和/或任何其他信息吗?
P.S。我知道普通的旧授权可以在这里工作,但是如果某个用户想要创建自己的移动分机(目前因安全原因而不允许)会怎样?此外,当前系统有一个被许多人识别的按钮,他们知道点击后会发生什么。使用该应用程序时,当用户看到登录对话框而不是“使用*登录”按钮时,可能会出现问题。我真的希望有一个聪明的解决方案。
答案 0 :(得分:1)
您的担忧是现场。您的API密码不应存储在设备上。
但是,我不确定为什么要关注构建单独的端点,因为OAuth 2具有针对这些用例的授权流程。
http://tools.ietf.org/html/rfc6749#section-9
在您的使用案例中,我建议使用隐式授权流来获取访问令牌并将其存储在本地设备上。没有刷新令牌,access_token可以有一个到期日期。当然,设备上的令牌可能会受到损害,但损坏将仅限于特定用户,而不是整个应用程序。
如果这种安全级别不可接受,那么您可以查看在应用程序的不同部分拆分API Secret,然后在应用程序中运行时将其组装。