PHP OAuthProvider拒绝暂存服务器上的签名方法


PHP OAuthProvider rejecting signature method on staging server

我使用PHP扩展制作了一个OAuth Provider。这在我的开发环境中运行良好,但在将其移动到我们的暂存服务器后,我不断收到错误消息:

oauth_problem=signature_method_rejected

我通过在连接到它自身的临时服务器上使用测试脚本进行连接,在连接临时服务器的开发服务器上使用PHP OAuth Extension和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

(插入中断以便于阅读)

正如你所看到的,签名方法是有效的(我已经尝试了规范中提到的其他方法,但它们在暂存服务器或开发服务器上都不起作用

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

你能检查一下你是否有任何htauth东西阻塞吗?此外,您的应用程序是否在http和https连接之间来回切换?

我相信你已经设置了阻止通信的htauth,我建议将你的vhost修改为:

订单拒绝、允许全部拒绝AuthType BasicAuthName"保护区"AuthUserFile需要有效用户允许从您的IP地址

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

谢谢,

我通过将SIGNATURE_METHOD = HmacSHA1更新为HMAC-SHA1解决了这个问题。