首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OAuth2客户端凭证

OAuth2客户端凭证
EN

Stack Overflow用户
提问于 2022-05-18 20:38:16
回答 1查看 978关注 0票数 0

所以现在我正在我的服务器上实现oauth2,但我只想支持client_credentials授权。问题是,节点-OAuth2-服务器说支持这种类型的拨款,我几乎调试了整个库,有些事情对我来说没有意义。

据我所知,client_credentials补助金应该是这样运作的:

  1. 应该提出内部请求来为客户端生成client_idclient_secret,这是我们获得client_secret的唯一一次,我们应该将其交给客户端。
  2. client_id应该存储在数据库中,包含任何额外的数据(比如相关的帐户id或类似的东西)和一个client_secret的散列,这样我们以后就可以验证它了。
  3. 客户端向服务器发送请求,包括client_idclient_secret
  4. 然后,服务器应该生成一个访问令牌(在我的例子中,我将使用JWT)并从请求返回。我们还需要将此令牌存储在数据库中,以便在需要时可以撤销该权限。
  5. 客户端必须在将来的请求中使用此访问令牌从服务器访问资源,如果令牌有效(没有过期、没有失去权限等),服务器将对每个请求进行验证。

我可能错了,但这正是我所需要的,这正是C#恒等所做的,并解释了这里

在我的例子中,我正在使用nodejs。实际上是一个NestJS项目,所以我尝试使用这个库,它基本上是node-oauth2-server的包装器,如果您查看一下node-oauth2-server内部,看起来它们只支持授权代码,这是因为AuthorizeHandler.handle()总是返回授权代码,AuthenticateHandler.handle()总是期望授权代码并返回访问令牌。基本上,我需要调用AuthenticateHandler.handle(),但我必须传递并检查client_idclient_secret,而不是检查授权代码。

这是一个与我完全相同的最近的问题:https://github.com/oauthjs/node-oauth2-server/issues/552

因此,首先,我想确认我是对的,这个库的实现方式很糟糕,其次,还有其他client_credentials内置的nodejs吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-05-18 23:57:12

正如您已经提到的,目前它不支持client_credentials授权,您仍然可以在内部使用授权代码流授予类型来获取访问令牌。

  • 准备client_credentials授予类型请求并提交给服务器。
  • 将此请求映射到授权代码流,并添加authorization code流所需的其他属性。
  • 向授权服务器提交请求。
  • 从响应中获取代码。
  • 使用oauth code准备令牌交换调用。
  • 去拿access_token
  • 返回令牌以响应client_credentials调用。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72295694

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档