首页 文章

对于B2B Enterprise REST API,是否应该在oAuth2中请求访问令牌使以前授予的访问令牌无效到该客户端ID?

提问于
浏览
1

对于为可能具有使用客户端ID /密钥的多个应用程序的企业客户端提供的B2B REST API:

如果您发送针对特定客户端ID和客户端密钥的oAuth2访问令牌的请求并接收访问令牌,那么稍后发送另一个具有相同客户端ID /密钥的令牌的请求,是否应该使先前的访问令牌无效?

换句话说,在这种情况下,客户端ID /机密应该能够请求和使用多个有效的访问令牌吗?是否有不同的情况应该实施?

2 回答

  • 1

    OAuth2通常是关于用户委托访问客户端的,因此在客户端拥有许多用户(通常会这样)的情况下,它肯定会使用多个访问令牌,因为它们将适用于不同的用户 .

    考虑将您的Google帐户授予其他在线应用程序(客户端)的情况 . Google会发出访问令牌,允许客户端读取您的联系人,例如,使用Google的OAuth2 API(事先得到您的批准) . 显然,它只能使用此令牌访问您的联系人,而不是其他人 . Google可以向同一客户发出许多不同的访问令牌,但每个可能对应于不同的用户和/或资源 .

    相同的授权服务器可以为许多不同的资源发布令牌,因此即使在没有与用户交互的情况下(如在“客户端凭证”授权中),客户端仍可能需要管理多个令牌 .

    授权服务器在为同一用户,受众,范围等请求另一个令牌时是否使令牌无效将取决于实现 . 客户端通常不需要这样做,并且通常会使用刷新令牌在其现有令牌即将到期时获取新令牌 . 我认为一般来说,用户可以使他们授权的现有令牌无效,并且令牌可以为特定客户端无效,这一般更为重要 . 当然,这还要求资源服务器在授予访问权限之前有一些检查令牌撤销的方法 .

  • 1

    是的,客户可以拥有多个访问令牌 . 这很有意义,我们实际上正在使用 .

    考虑到令牌可能具有不同的范围,因此客户端可能具有针对资源具有范围“res1”的令牌以及针对不同资源具有范围“res2”的另一令牌 .

    另一个用例可以是请求具有多个范围的刷新令牌,例如, “read write”并使用它来获取“读取”范围的访问令牌以初始化管理GUI,然后为每个写入事务获取新的访问令牌 .

    你可以争论它是否是好的设计/实现,但它绝对是技术上可行的,并且不被标准禁止 .

相关问题