我有一组由oauth 2保护的REST API。我需要从Android应用和webapp访问它们。
从Android应用程序访问API似乎很容易实现。我在这里无法理解的是 - 从webapp访问相同API的正确和安全的方法是什么?
我在思考,我不应该使用一些JS库从浏览器直接调用API,因为在我看来它会非常不安全。相反,我应该保持传统,通过向Web服务器提交请求,然后让它进行REST API调用。这类似于从Android进行REST调用的方法。
我的思维/方法是否正确?
答案 0 :(得分:2)
无论请求来自哪里,访问您的API都应该是相同的。您只需使用带有承载方案的Authorization标头,并将JWT标记粘贴在那里。
你获得JWT令牌的方式不同,正如我在this answer中解释的那样。这完全取决于您对客户端应用程序的信任程度。
如果您的客户端是从服务器端查询API的Web应用程序,则可以使用code authorization grant并获取API的访问权限和刷新令牌。
如果您想从JavaScript应用程序访问API,则无法隐藏应用密钥或刷新令牌,因此您应该使用implicit grant。
如果您知道如何在Android客户端上安全地存储机密,则可以使用resource owner password grant。
代码授权授权绝对是最安全的,因为它比服务器上运行的应用程序更难破坏服务器应用程序。