在使用 twitter API 时,我遇到了oauth_signature
基本上是(请求正文 + 请求参数 + nonces/timestamps + a consumer_secret
)的哈希。consumer_secret
只有发送请求的应用程序才知道。
在推特的例子中:
- 所有通信都必须通过 SSL 进行。
- twitter
consumer_secret
向每个授权的应用程序发出 。
由于 的主要用途oauth_signature
是防止 MITM(即没有山雀(在运输中篡改):),在我看来,这个特定的用例可以通过 Mutual SSL 解决
- Twitter
consumer_secret
可以为每个应用程序颁发 SSL 证书,而不是颁发 .
虽然这种客户端 ssl 证书的想法可能看起来像 1990 年代的互联网奥秘,但它并不成功,主要是因为在验证客户端证书的信任链时遇到了麻烦。这个问题在这里不会出现,因为 twitter 将是证书的唯一颁发者和验证者。缺点是代表 Twitter 需要付出更多努力来生成初始应用程序/客户端 ssl 证书,但回报将在于 REST API 的简单性,这可以依赖于客户是他所说的那个人的保证。
请注意,twitter 只是本例中的一个示例。AFAIK,大多数其他 oauth 实现者使用类似的策略,这里的要点适用于任何已经强制使用 SSL 的大规模 OAuth 实现者。
我在这里想念什么?互联网惯性?