访问使用 OAUTH 保护的 REST API
Accessing REST APIs secured using OAUTH
我有一组由 oauth 2 保护的 REST API。我需要从 Android 应用程序和网络应用程序访问它们。
从 android 应用程序访问 APIs 对我来说实施起来似乎非常简单。我在这里无法理解的是 - 从 webapp 访问相同 APIs 的正确和安全的方法是什么?
我在想,我不应该使用某些 JS 库从浏览器直接调用 APIs,因为在我看来这很不安全。相反,我应该保持传统,通过向 Web 服务器提交请求然后让它进行 REST API 调用。这类似于从 Android 进行 REST 调用的方法。
我的 thinking/approach 正确吗?
无论请求来自何处,访问您的 API 应该是相同的。您只需使用带有不记名方案的授权 header 并将 JWT 令牌粘贴在那里。
尽管如此,您获取 JWT 令牌的方式有所不同,正如我在 this answer 中所解释的那样。这完全取决于您对客户端应用程序的信任程度。
如果您的客户端是从服务器端查询您的 API 的 Web 应用程序,您可以使用 code authorization grant 并为您的 API 获取访问和刷新令牌。
如果您想从 JavaScript 应用程序访问您的 API,您无法隐藏 app-keys 或刷新令牌,因此您应该使用 implicit grant .
如果您知道如何在 Android 客户端上安全地存储机密,则可以使用 resource owner password grant。
代码授权授予绝对是最安全的,因为与在您的计算机上运行的应用程序相比,破坏服务器应用程序要困难得多。
我有一组由 oauth 2 保护的 REST API。我需要从 Android 应用程序和网络应用程序访问它们。
从 android 应用程序访问 APIs 对我来说实施起来似乎非常简单。我在这里无法理解的是 - 从 webapp 访问相同 APIs 的正确和安全的方法是什么?
我在想,我不应该使用某些 JS 库从浏览器直接调用 APIs,因为在我看来这很不安全。相反,我应该保持传统,通过向 Web 服务器提交请求然后让它进行 REST API 调用。这类似于从 Android 进行 REST 调用的方法。
我的 thinking/approach 正确吗?
无论请求来自何处,访问您的 API 应该是相同的。您只需使用带有不记名方案的授权 header 并将 JWT 令牌粘贴在那里。
尽管如此,您获取 JWT 令牌的方式有所不同,正如我在 this answer 中所解释的那样。这完全取决于您对客户端应用程序的信任程度。
如果您的客户端是从服务器端查询您的 API 的 Web 应用程序,您可以使用 code authorization grant 并为您的 API 获取访问和刷新令牌。
如果您想从 JavaScript 应用程序访问您的 API,您无法隐藏 app-keys 或刷新令牌,因此您应该使用 implicit grant .
如果您知道如何在 Android 客户端上安全地存储机密,则可以使用 resource owner password grant。
代码授权授予绝对是最安全的,因为与在您的计算机上运行的应用程序相比,破坏服务器应用程序要困难得多。