为什么OAuth提供访问令牌和访问令牌密钥?为什么不只提供单一值?

19

为什么OAuth要包含两个分开的值——访问令牌(access token)和访问令牌密钥(access token secret)?作为OAuth的使用者,我看到所有的建议都表明我应该将令牌(token)和密钥(secret)存储在一起,并基本上将其视为一个值。

那么规范为什么要首先要求两个不同的值呢?


我可能已经回答了自己的问题,但我怀疑原因是OAuth提供程序的索引。提供程序可以通过访问令牌高效地查找记录,然后验证访问令牌密钥,而不必查找长且不易索引的组合。 - John Bledsoe
2个回答

22

实际上,访问令牌密钥永远不会传输给提供商。相反,请求会传输访问令牌,然后使用密钥对请求进行签名。这就是为什么您需要同时具备两者:一个用于标识,一个用于保护。


但是为什么Twitter现在也要我们传输密钥呢?请参见https://dev.twitter.com/docs/auth/application-only-auth - Joshua Frank
1
@JoshuaFrank 不太确定为什么。这可能是你想直接问Twitter的事情。但无论如何,需要注意的一件重要的事情是,他们的方法需要SSL才能保证安全。 - yydl
SSL很有好处,但我仍然不明白为什么我们需要一个密钥和一个秘密。 - Joshua Frank

0

有两个秘密,一个是令牌秘密,另一个是消费者秘密。秘密用于签署请求(生成OAuth签名),但不会在请求头中传输,其中令牌在头部发送以识别客户端并验证其是否具有访问权限。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接