1

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

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

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

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

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

4

1 回答 1

1

你的担心是正确的。您的 API 机密不应存储在设备上。

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

https://www.rfc-editor.org/rfc/rfc6749#section-9

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

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

于 2013-07-20T08:50:14.180 回答