Oauth 2.0 对于B2B企业REST API,在oAuth2中请求访问令牌是否应该使先前授予该客户机ID的访问令牌失效?

Oauth 2.0 对于B2B企业REST API,在oAuth2中请求访问令牌是否应该使先前授予该客户机ID的访问令牌失效?,oauth-2.0,Oauth 2.0,对于为企业客户端提供服务的B2B REST API,可能有多个使用客户端ID/密码的应用程序: 如果您发送一个针对特定客户机ID和客户机机密的oAuth2访问令牌的请求,并收到一个访问令牌,然后稍后再发送另一个针对具有相同客户机ID/机密的令牌的请求,这是否会使以前的访问令牌失效 换句话说,在这种情况下,客户端ID/密码是否应该能够请求和使用多个有效的访问令牌?在不同的情况下是否应该实现此功能?是的,一个客户端可以有多个访问令牌。这很有意义,我们实际上正在使用 考虑令牌可能具有不同的作用域,因此

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

如果您发送一个针对特定客户机ID和客户机机密的oAuth2访问令牌的请求,并收到一个访问令牌,然后稍后再发送另一个针对具有相同客户机ID/机密的令牌的请求,这是否会使以前的访问令牌失效


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

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

考虑令牌可能具有不同的作用域,因此客户机可能具有一个作用域为“res1”的令牌用于资源,另一个作用域为“res2”的令牌用于不同的资源

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


您可以争论它是否是良好的设计/实现,但它在技术上绝对是可行的,并且不是标准所禁止的。

OAuth2通常是关于一个用户授权访问一个客户端,因此在一个客户端有多个用户的情况下(通常是这样),它肯定会使用多址令牌,因为它们将应用于不同的用户

考虑这样一种情况:您将您的Google帐户的访问权授予另一个在线应用程序(客户端)。Google发布了一个访问令牌,允许客户端读取您的联系人,例如,使用Google的OAuth2API(事先获得您的批准)。显然,它只能使用此令牌访问您的联系人,而不能访问其他人的联系人。谷歌可能会为同一个客户端发布许多不同的访问令牌,但每个令牌可能对应不同的用户和/或资源

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

当为同一用户、访问群体、作用域等请求另一个令牌时,授权服务器是否使令牌无效取决于实现。客户机通常不需要这样做,通常在现有令牌即将过期时使用刷新令牌来获取新令牌。我想说,通常更重要的是,用户可以使他们授权的现有令牌无效,并且可以使特定客户端的令牌无效。当然,这也要求资源服务器在授予访问权限之前有某种方式来检查令牌撤销