当前位置:  开发笔记 > 编程语言 > 正文

OpenID登录代码在实时服务器中失败

如何解决《OpenID登录代码在实时服务器中失败》经验,为你挑选了1个好方法。

我想用最新的LightOpenID版本实现一个OpenID登录系统.我测试设置有由线的源代码行的例子(I刚刚更换localhost$_SERVER['HTTP_HOST']在构造).

问题是在我的私人网络(Windows Vista上的PHP/5.3.6)的开发框中一切正常,但在HSP公共网络(CentOS上的PHP/5.3.3)的生命服务器中验证总是失败.

我已经添加了var_dump()所有内容,我可以告诉你,代码的两个副本产生完全相同的请求参数并接收完全相同的响应参数(通过GET).只有openid.assoc_handle,openid.sig,openid.response_nonceopenid.return_to有不同的价值观,这是我的猜测是预期的行为.

但是,我的开发框从OpenID提供程序收到此信息(无论我使用哪一个):

is_valid:true
ns:http://specs.openid.net/auth/2.0

......我的活狐得到了这个:

is_valid:false
ns:http://specs.openid.net/auth/2.0

没有涉及任何非ASCII字符,因此它不能成为编码问题.我的托管服务肯定有问题,但我无法弄清楚是什么.

我需要有关可能原因和故障排除提示的建议.



1> Álvaro Gonzá..:

我已经解决了问题并找到了解决方法.该request()方法进行一些自动检测以找出如何建立HTTP连接:

protected function request($url, $method='GET', $params=array(), $update_claimed_id=false)
{
    if (function_exists('curl_init')
        && (!in_array('https', stream_get_wrappers()) || !ini_get('safe_mode') && !ini_get('open_basedir'))
    ) {
        return $this->request_curl($url, $method, $params, $update_claimed_id);
    }
    return $this->request_streams($url, $method, $params, $update_claimed_id);
}

在我的开发框中使用CURL但在我的实时框中它使用,file_get_contents()因为检查失败.原因是open_basedir指令不是空的.

如果我强制LightOpenID使用CURL,一切都运行顺利.


更新#1: LightOpenID在确定卷曲不可用时是正确的.我在日志文件中找到了这个:

启用safe_mode或设置open_basedir时,无法激活CURLOPT_FOLLOWLOCATION

至于file_get_contents()版本,我怀疑我在库中发现了一个拼写错误:

Index: lightopenid/openid.php
===================================================================
--- lightopenid/openid.php  (0.60)
+++ lightopenid/openid.php  (working copy)
@@ -349,7 +349,7 @@
             $this->headers = $this->parse_header_array($http_response_header, $update_claimed_id);
         }

-        return file_get_contents($url, false, $context);
+        return $data;
     }

     protected function request($url, $method='GET', $params=array(), $update_claimed_id=false)

我已经通知了作者,他确认这是一个错误.我会报告它是否得到修复.

更新#2:该错误已于 2012年6月在master分支中修复.它仍然不是稳定版本的一部分,但可以从代码库下载.


我想您出于安全原因只能成功验证一个呼叫.
推荐阅读
爱唱歌的郭少文_
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有