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

时间:2014-06-19 21:17:17

标签: oauth-2.0

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

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

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

2 个答案:

答案 0 :(得分:1)

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

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

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

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

答案 1 :(得分:1)

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

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

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

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