首页 > 解决方案 > Oauth2 和 JWT 的区别

问题描述

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

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

标签: node.jsauthenticationoauth-2.0jwtpassport.js

解决方案


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

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

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

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

查看这些API 最佳实践,以获取有关如何解决某些问题的更多想法。


推荐阅读