oauth-2.0 如何使用node-oidc-provider为userinfo端点和资源服务器调用颁发访问令牌

yxyvkwin  于 2022-10-31  发布在  其他
关注(0)|答案(1)|浏览(177)

为什么node-oidc-provider拒绝为/userinfo端点和api(资源服务器)调用颁发单个令牌?
在oauth2和open id connect规范中,我没有看到授权服务器不应该为这两种用法颁发访问令牌。Can we request OAuth 2 scopes in OIDC?
根据node-oidc-provider的文档:https://github.com/panva/node-oidc-provider/tree/main/docs#featuresuserinfo
启用userinfo端点。使用该端点需要至少具有没有资源服务器受众的openid作用域的不透明访问令牌。
我错过了什么或什么我可以验证用户和直接获得访问令牌与api调用能力?
我的案例:我们有第一方移动的应用程序和我们自己的授权服务器和一个API。因此,用户使用“连接我们的服务器”登录到移动应用程序。在上述情况下,有必要
1.验证用户身份(并获取用户信息)
1.强制用户授权调用API(通过请求仅在此API上使用的访问令牌)
这需要2种不同的用户交互,这可能不太好。

这是根据下面的@filip-skokan回答更新的信息。

根据您的建议,如果我说错了,请指正:
1.解决方案一:使用资源参数触发受权请求,以获取资源服务器作用域得令牌.使用该响应中得idToken检索userinfo,而无需对/userinfo进行特定调用.
对不对?
1.解决方案二:启用refreshToken颁发并触发仅具有userinfo作用域(openid,email等)而不具有资源作用域的授权请求。由于Op服务器应返回访问令牌和刷新,因此我应使用刷新令牌来获取具有资源作用域的新访问令牌。
使用刷新令牌来获取资源范围访问令牌可能会迫使最终用户将这个新的范围授予客户端。因为,如上所述,我们没有在授权请求中包含资源范围。这是与最终用户的一个新的交互。对吗?
对此有何解释?

bvpmtnay

bvpmtnay1#

在oauth2和openidconnect规范中,我没有看到授权服务器不应该为这两种用法颁发访问令牌
虽然这是真的,但也没有语言说这是一个好主意,事实是,它不是。
UserInfo端点只是另一个资源服务器,它不可能为多个资源(例如,使用resource参数的两个API)发出访问令牌。这是我做出的一个选择,以禁止资源服务器获取它们接收的访问令牌并使用userinfo端点,这不是它们打算使用的资源。
这需要2种不同的用户交互,这可能不太好。
你不需要两个交互。首先,移动的客户端可以获得userinfo从ID令牌返回的所有信息。其次,在默认情况下,如果客户端没有在令牌端点使用相应的资源参数,仍然会发出userinfo令牌。我的建议是走ID令牌路线。否则,请配置环境以发出刷新令牌,并让客户端应用程序以这种方式从单个交互中获得两个访问令牌。

相关问题