为什么OAuth同时提供访问令牌和访问令牌密钥?为什么不只是一个值?

为什么OAuth同时提供访问令牌和访问令牌密钥?为什么不只是一个值?,oauth,Oauth,为什么OAuth同时包含一个访问令牌和一个访问令牌密钥作为两个独立的值?作为消费者或OAuth,我看到的所有建议都表明,我应该将令牌和机密存储在一起,并将它们视为一个值 那么,为什么规范首先需要两个值呢?实际上,访问令牌机密永远不会传输给提供者。相反,请求传输访问令牌,然后使用密钥对请求进行签名。这就是为什么您需要两者:一个用于识别,另一个用于保护有两个秘密,一个是令牌秘密,另一个是消费者秘密。机密用于对生成oauth签名的请求进行签名,但不会在请求头中传输,在请求头中发送令牌以识别客户端并验证

为什么OAuth同时包含一个访问令牌和一个访问令牌密钥作为两个独立的值?作为消费者或OAuth,我看到的所有建议都表明,我应该将令牌和机密存储在一起,并将它们视为一个值


那么,为什么规范首先需要两个值呢?

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

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

我可能已经回答了我自己的问题,但我怀疑原因是为oauth提供程序编制了索引。提供商可以通过访问令牌高效地查找记录,然后验证访问令牌机密,而不必查找很长且不太可索引的组合。但是,为什么Twitter让我们现在也传输机密呢?见@JoshuaFrank,不太清楚原因。这可能是你想直接在推特上说的。但无论如何,需要注意的一件重要事情是,他们的方法需要SSL才能确保安全。SSL的优点很好,但我还是不明白为什么我们需要密钥和秘密。