PHP OAuthProvider拒绝登台服务器上的签名方法

时间:2012-08-03 12:27:21

标签: php oauth single-sign-on oauth-provider

我使用PHP Extension创建了OAuth提供程序。这在我的开发环境中工作正常,但在将其移动到我们的临时服务器之后,我一直收到错误消息:

oauth_problem=signature_method_rejected

我通过在连接到自身的登台服务器上连接测试脚本,连接登台服务器的开发服务器以及使用PHP OAuth扩展和Zend OAuth Consumer类来测试它。在每种情况下,它在连接到开发服务器时都有效,但在连接到临时服务器时会出现上述错误。

跟踪代码,在实例化OAuthProvider类时会出现错误。

$this->provider = new OAuthProvider();

检查$ _SERVER ['QUERY_STRING']给出了以下内容:

oauth_consumer_key=6e449c12132115a9ba1cf1163c37f904&
oauth_nonce=e2ff158969b3e7213927e4a19de1b11f&
oauth_timestamp=1343990462&
oauth_signature_method=HMAC-SHA1&
oauth_version=1.0&
oauth_callback=redacted&
oauth_signature=y06YvCzVno8GSDib4%2BOeExDGWH0%3D

(为了便于阅读而插入了插入符号)

正如您所看到的,签名方法是有效的(我已尝试过规范中提到的其他方法,但它们无法在登台服务器或开发服务器上运行。

之前有没有人遇到这样的事情?如果需要更多信息,请告诉我。

2 个答案:

答案 0 :(得分:1)

你能检查一下你是否有任何htauth东西阻塞?此外,您的应用程序是否会在http和https连接之间跳转并进行潜水?

我相信你有htauth设置阻止我建议修改你的vhost的通信:

订单拒绝,允许 否认所有人 AuthType Basic AuthName“保护区” 的AuthUserFile 需要有效用户 允许从您的IP地址

如果你把它放在你的vhost引用你的公共文件夹中,这应该允许ip地址在没有htpasswd的情况下进行通信....

谢谢,

答案 1 :(得分:0)

我通过将SIGNATURE_METHOD = HmacSHA1更新为HMAC-SHA1来解决此问题。