为什么不能窃取访问令牌?

Jul*_*ien 25 security oauth access-token

我正在学习OAuth,我有一个问题,我无法找到一个anwser ..

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

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

如果我将此URL提供给其他用户,则另一个用户可以访问,因此API不再受保护了吗?

Jon*_*der 9

简短回答:是的,对于OAuth2 - 拥有有效access_token的人可以访问该令牌指定的资源.多长时间取决于OAuth2执行提供者.

关于OAuth1和2的长答案:

说到OAuth 1 ,访问令牌是不够的.您还需要访问令牌密钥以及使用者密钥和密钥.保持访问令牌的机密性并限制其范围和有效时间仍然是好的,但是如果没有客户端和令牌机密,则无法使用访问令牌.OAuth 1不要求您使用SSL,因为加密是内置于规范中的.

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

  • OAuth 2.0本身实际上并未定义任何访问令牌类型。这是由其他处理令牌身份验证的规范完成的。当前有两种建议,一种用于必须在TLS上使用且必须像密码一样工作的承载令牌,另一种是用于MAC令牌,这非常类似于OAuth 1.0 HMAC-SHA1。 (2认同)