对于可能使用客户端ID/ B2B的多个应用程序的企业客户端,REST服务:
如果您为特定的客户端ID和客户端秘密发送了一个oAuth2访问令牌的请求,并接收了一个访问令牌,那么稍后会发送另一个具有相同客户端ID/秘密的令牌请求,这是否会使之前的访问令牌失效?
换句话说,在这种情况下,客户ID/秘密应该能够请求和使用多个有效的访问令牌吗?是否有不同的情况需要实施?
发布于 2014-06-20 13:14:11
OAuth2通常是指用户将访问委托给客户端,因此在客户机有许多用户的情况下(通常情况下),它将非常肯定地使用多个访问令牌,因为它们将应用于不同的用户。
考虑一下将Google帐户授予另一个在线应用程序(客户端)访问权限的情况。谷歌发布一个访问令牌,允许客户端读取您的联系人,例如,使用谷歌的OAuth2 API(事先批准)。显然,它只能使用这个令牌访问您的联系人,而不能访问其他人的。Google可能会向同一个客户端发出许多不同的访问令牌,但每个令牌都可能对应于不同的用户和/或资源。
同一授权服务器可能为许多不同的资源发出令牌,因此即使在没有与用户交互的情况下(如“客户凭据”授予),客户端仍可能需要管理多个令牌。
当为同一用户、受众、范围等请求另一个令牌时,授权服务器是否使令牌无效,将取决于实现。客户端通常不需要这样做,通常会在现有令牌即将过期时使用刷新令牌来获取新令牌。我想说的是,通常更重要的是,用户可以使他们授权的现有令牌失效,并且对于特定的客户端,令牌可以失效。当然,这也要求资源服务器在授予访问之前有某种方式检查令牌撤销。
发布于 2014-06-20 09:19:00
是的,一个客户端可以有多个访问令牌。这很有意义,我们实际上是在用。
请考虑令牌可能有不同的作用域,因此客户端可能有一个范围为"res1“的令牌用于资源,而另一个令牌的作用域为"res2”,用于不同的资源。
另一个用例可能是请求具有多个作用域的刷新令牌,例如“读写”,并使用它获得一个“读”作用域访问令牌来初始化管理GUI,然后为每个写事务获得一个新的访问令牌。
您可以争论它是否是好的设计/实现,但是它在技术上是可能的,并且不是标准所禁止的。
https://stackoverflow.com/questions/24316376
复制相似问题