Oauth2 和 JWT 的区别

Posted

技术标签:

【中文标题】Oauth2 和 JWT 的区别【英文标题】:Oauth2 and JWT difference 【发布时间】:2021-07-16 03:55:51 【问题描述】:

我对这个话题感到困惑,我一直在使用 NODEJS API 进行 JWT 身份验证,并且听说过 Oauth2 并阅读了 Oauth2 可以与 JWT 一起使用的文档,所以我的问题是,我应该使用 Oauth2我的其余 API 将被 React 前端应用程序使用或继续使用 JWT 身份验证。

那么,如果使用 Oauth2,前端将如何处理呢? ,因为已经看到其他 API 提供了 Google 提供商的登录页面,例如

【问题讨论】:

【参考方案1】:

JSON Web 令牌 (JWT) 是一种对数据进行编码的方法,可以防止数据被篡改(当 JWT 被签名时),并且可以在 HTTP 中轻松使用(因为它已被编码)。因此,JWT 是一种在不同方(例如您的前端应用和 API)之间传递身份验证和授权数据的方式。

OAuth2 是一种获取授权的协议。它描述了用户如何将对其资源的访问权限授予应用程序的方法。因此 OAuth2 描述了您必须实现的过程,以便您的应用程序可以获取,例如一个 JWT 令牌。

OAuth2 和 JWT 都是互联网标准,所以最好实现它们。

如果目前您在未实施 OAuth 的情况下获得 JWT,我强烈建议您切换到 OAuth 流程。具体如何实施取决于您的基础设施。如果您希望前端执行流程并获取 JWT 访问令牌,您可以使用 implicit flow 或 code flow with PKCE(推荐使用第二个)。如果您需要后端获取 JWT 以访问其他 API,则可以让后端执行 code flow,并将 JWT 与用户会话相关联。

查看这些API best practices 以获得有关如何解决您的一些问题的更多想法。

【讨论】:

以上是关于Oauth2 和 JWT 的区别的主要内容,如果未能解决你的问题,请参考以下文章

cookie,session,jwt,token,oauth2联系和区别

OAuth2.0-JWT令牌

Oauth2 + JWT登出(黑名单方案)

Oauth2 + JWT登出(黑名单方案)

OAuth2 和 Omniauth 的区别

oauth2Login 和 oauth2Client 有啥区别?它们的用例是啥?