将 OAuth2 或 JWT 用于带有 Wordpress 后端(REST API)的移动应用程序

Posted

技术标签:

【中文标题】将 OAuth2 或 JWT 用于带有 Wordpress 后端(REST API)的移动应用程序【英文标题】:Use OAuth2 or JWT for mobile application with Wordpress backend (REST API) 【发布时间】:2021-01-04 16:54:27 【问题描述】:

所以..我已经阅读了无数文章,但仍然无法确定要使用哪个;如果一个简单的 JSON Web Token 就足够了..

我有一个 Wordpress 网站和该网站的移动应用程序。 我可以使用电子邮件和密码登录我的网站,也可以使用电子邮件和密码登录我的移动应用程序。 移动应用程序通过 Wordpress REST API 与网站通信。它(移动应用程序)将用户电子邮件和密码发送到 API,如果两者都有效,则 API 返回 JWT。 然后,我只需将 JWT 存储在用户的设备中。

我的主要疑虑是:对于一个没有太多敏感用户数据的移动应用,这是否可以接受/足够安全?对于一个包含敏感用户数据的移动应用,这是否可以接受/足够安全?

或者我应该在这两种情况下都使用 OAuth2(这更难实现并且需要时间,但它更安全(我认为..))? 谢谢,如有重复请见谅。

【问题讨论】:

【参考方案1】:

这更像是您可能必须做出的安全合规性决定。

首先,您应该像产品负责人一样思考或询问产品负责人使用哪一个,向他们解释 OAuth 2.0 与简单 JWT 相比有哪些优势。

您可能需要考虑以下事项,

    用户群有多大? 您要存储的数据有多敏感? 您想为用户提供什么样的用户体验?

另外,JWT 并不意味着它不够安全。

为了使其更安全,您还可以做的另一件事是使用刷新令牌机制为您的 JWT 添加过期时间,这样即使 JWT 被暴露,它也会在稍后的某个时间过期。

【讨论】:

对于没有敏感数据的本机应用程序,我只是使用具有到期日期的 JWT(尚未决定应该持续多长时间..),但对于具有敏感数据的本机应用程序我仍然不确定如何继续.. 它应该有一个登录页面吗?它是否应该有一个单独的服务器仅用于身份验证(具有自己的登录页面,因此应用程序本身不会有登录屏幕,它会打开浏览器)..然后在用户设备上存储刷新和访问令牌?我是否过度设计了这个? :( 这个博客可以帮助你了解更多。 hashedin.com/blog/… 谢谢你senthil :)

以上是关于将 OAuth2 或 JWT 用于带有 Wordpress 后端(REST API)的移动应用程序的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Spring Boot OAuth2 的 SecurityContextHolder 中获取 JWT 令牌?

带有预取 JWT 令牌的 OAuth2RestTemplate

带有加密 JWT 访问令牌的 Spring Boot OAuth2

带有 JWT 的 Spring Security OAuth2 重定向到登录页面

来自 GoogleAPI 的带有 JWT 的 Oauth2 令牌响应“invalid_grant”

未从 ADFS 3.0 获取用于 OAuth2 访问令牌的 JWT 中的用户身份