【问题标题】:Is OAuth 2.0 a Framework or Protocol?OAuth 2.0 是框架还是协议?
【发布时间】:2021-02-12 19:24:13
【问题描述】:

我刚刚收到要求在 SSO(集中用户数据库/服务器)上的 REST API 上应用 Oauth2.0 身份验证。

我对 OAuth2.0 完全陌生。只是通过互联网学习概念。

我非常了解 OAuth2.0 的工作原理。 访问承载令牌和刷新令牌的所有概念。

仍然困扰我的一件事是:

是框架还是协议?

我的意思是它是某种标准或一组指令,以进行身份​​验证?

就我而言,我不关心使用 Facebook 或 Google 登录。

我只需要登录用户并获取访问和刷新令牌,并使用访问承载令牌验证基于用户的路由。

由于我一直在研究 Node.js 的官方 OAuth2.0 文档:

https://oauth2-server.readthedocs.io/en/latest/index.html

它所说的只是创建一个用于插入、获取和验证令牌的模型。

处理所有这些的自定义逻辑。

如果它是一个框架,它会自己处理所有事情,但据我所知,它并没有为开发人员提供太多帮助。我在文档中看不到任何内置函数或方法。例如生成访问令牌、获取访问令牌、刷新令牌等。所有这些都基于自定义逻辑。

我还在寻找简单的 Oauth2 Nodejs 官方库,它可以通过调用简单的方法来验证路由。

因为如果 Oauth2 不是这样,我真的必须管理所有逻辑自定义方式,那我为什么不应该使用 JWT?

我没有得到这个吗?谁能帮我解决这个困惑?

【问题讨论】:

  • OAuth2 不是“网络框架”意义上的框架。您链接的项目只是 Node.js 的 1 个 oauth2 实现。这是另一个:github.com/curveball/a12n-server。因此,即使 OAuth2 是“身份验证系统框架”,它也与特定的 Node.js 实现提供或不提供什么有点无关。
  • @Evert 实际上 Oauth2 让我很难受,尽管我了解了它的所有概念,但我仍然找不到任何好的简单的 Oauth2 官方 Nodejs 库。
  • 到目前为止我所经历的只是令牌的自定义处理和管理,那么为什么不改用 JWT 呢?
  • OAuth2 没有官方库。 JWT 和 OAuth2 解决的问题非常不同,可以同时使用。
  • 为什么和 NodeJS 相关?由于nodejs 标签,我找不到问题/答案。请考虑删除标签。

标签: rest authentication oauth-2.0 oauth


【解决方案1】:

它是一种协议,因为它定义了多方如何交换消息,以将操作 API 背后的资源的授权委托给称为客户端的应用程序。它由 IETF 标准请求评论 (RFC) 文档在这里定义:https://www.rfc-editor.org/rfc/rfc6749

它也是一个框架,因为它让实现者可以通过其他授权扩展协议。 OpenID Connect 是处理身份验证的 OAuth2 扩展,在此处定义:https://openid.net/specs/openid-connect-core-1_0.html

【讨论】:

  • 我不同意这个 OAuth 2.0 本身不是协议而是框架。协议会更具体,OAuth 2.0 将很多事情留给相关各方。来自 RFC:tools.ietf.org/html/rfc6749#section-1.8
  • @OmarDonnadieuMercado 一个不排除另一个。正如我在回答中所说,OAuth2 既是协议又是框架。它描述了各方如何交互,这正是协议所做的。另请参阅 tools.ietf.org/html/rfc6749#section-1.2,其中描述了协议流程。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-04-15
  • 2011-08-20
  • 2014-03-07
  • 2015-08-05
  • 2014-11-02
  • 2021-01-25
  • 2011-07-22
相关资源
最近更新 更多