node.js - Oauth2 和 JWT 的区别
问题描述
我对这个话题感到困惑,我一直在使用 NODEJS API 进行 JWT 身份验证,并且听说过 Oauth2 并阅读了 Oauth2 可以与 JWT 一起使用的文档,所以我的问题是,我应该在休息时使用 Oauth2将由反应前端应用程序使用或继续使用 JWT 身份验证的 API。
那么,如果使用 Oauth2,前端将如何处理呢?,因为已经看到其他 API 提供了 Google 提供商登录页面,例如
解决方案
JSON Web Token (JWT) 是一种对数据进行编码的方法,这样可以防止数据被篡改(当 JWT 被签名时),并且可以在 HTTP 中轻松使用(因为它已被编码)。因此,JWT 是一种在不同方(例如您的前端应用程序和 API)之间传递身份验证和授权数据的方式。
OAuth2 是一种获取授权的协议。它描述了用户如何将对其资源的访问权限授予应用程序的方法。所以 OAuth2 描述了您必须实现的过程,以便您的应用程序可以获取,例如 JWT 令牌。
OAuth2 和 JWT 都是互联网标准,所以最好实现它们。
如果目前您在没有实现 OAuth 的情况下获得 JWT,我强烈建议您切换到 OAuth 流程。具体如何实施取决于您的基础设施。如果您希望前端执行流程并获取 JWT 访问令牌,您可以使用隐式流程或带有 PKCE 的代码流程(推荐使用第二个)。如果您需要后端获取 JWT 以访问其他 API,那么您可以让后端执行代码流,并将 JWT 与用户会话相关联。
查看这些API 最佳实践,以获取有关如何解决某些问题的更多想法。
推荐阅读
- itfoxtec-identity-saml2 - ITfoxtec 身份包的文档位置?
- java - 我需要从生成的号码中点击移动键盘
- javascript - 如何检测用户是否在 Instagram 上关注您?
- vue.js - 使用 Vue 在 Ionic 5 中自定义 webpack 配置
- api - 通过 Postman 自动刷新令牌
- java - Javafx 自定义滑块值
- python - 调用时动态地将方法添加到类中
- java - 如何在 Spring Boot 中使用 @ConfigurationProperties 注解
- c# - 发送 mouse_event 而不触发鼠标钩子
- javascript - Express.js 不允许超过 6 个请求。我该如何解决?