【发布时间】:2014-04-03 20:41:23
【问题描述】:
我已经尝试了解 OAuth 有一段时间了,但我仍然对工作流程和处理所用值的建议有一些疑问。我正在开发一个 PHP 三足 OAuth 1.0a 项目以供学习。这里描述了我将要提到的步骤; http://wiki.oauth.net/w/page/12238555/Signed%20Callback%20URLs
为什么在第 5 步中返回了一个令牌?我认为令牌已经为消费者所知,就像 token_secret 一样。所以它用作关于消费者发送数据的请求的标识符?还是我误以为发送的令牌与步骤 2 中发送的请求令牌相同?
-
回调 URL 在这里被列为可选,但在其他规范中它被认为是必需的。我正在考虑让人们将他们的回调 URL 存储在服务提供商的数据库中,因为它不会经常更改或根本不会更改,因此不会在步骤 1 中发送它并在步骤 5 中从数据库中检索它。
由于速度和可能的泄漏,不鼓励使用 RSA 哈希方法,因此每个人都决定使用 HMAC 方法。那么我们是否需要在步骤 1 和 6 中发送散列方法?此外,我看到很少有服务提供商提供其他方法。
使用 mt_rand() 制作哈希并不安全,所以我在考虑使用 openssl_random_pseudo_bytes(),它是否安全,例如作为 hash_hmac() 的哈希键?
我经常看到 sha1 用于请求和访问令牌以及 secret_tokens。像 sha256 或 sha512 这样的较长哈希不是更安全吗?如果安全延伸到存储空间,应该不是问题吧?
【问题讨论】: