28

我正在学习 OAuth,但我脑子里有个问题,我找不到答案。

我理解请求令牌授权或不授权应用程序使用 API。但是一旦用户获得了访问令牌,如果有人窃取了他的访问令牌会发生什么?

想象一下,我们有类似http://www.example.com/api/article/1?access_token= ******access_token******

如果我将此 URL 提供给另一个用户,另一个用户将拥有我的访问权限,因此 API 不再受到保护?

4

1 回答 1

13

简短回答:是的,对于 OAuth2 - 任何拥有有效 access_token 的人都可以访问该令牌指定的资源。多久取决于 OAuth2 提供者的实现。

关于 OAuth1 和 2 的长答案:

对于OAuth 1 ,访问令牌是不够的。您还需要访问令牌秘密以及消费者密钥和秘密。将访问令牌保密并限制其有效范围和时间仍然很好,但是如果没有客户端和令牌机密,您将无法使用访问令牌。OAuth 1 不要求您使用 SSL,因为规范中内置了密码学。

OAuth 2是不同的 - 可以说访问令牌的机密性更为重要。因此,API 提供者应确保访问令牌(在 OAuth2 中也称为承载令牌)仅在尽可能短的时间内有效。这些令牌就像密码一样工作,如果被拦截,攻击者可以立即使用。因此,OAuth2(带有不记名令牌)规范要求所有通信都通过 SSL 进行 - 因为规范中没有内置密码学。通常,访问令牌的有效期很短,可以使用“刷新令牌”进行刷新,该“刷新令牌”具有更长的有效期,但仅在消费者收到初始不记名令牌以及刷新不记名令牌时才传输。

于 2011-07-09T09:12:43.357 回答