LightOpenID validate() 在 Google Apps 上失败

LightOpenID validate() fail on Google Apps

提问人:Eric B. 提问时间:3/29/2011 最后编辑:kodeartEric B. 更新时间:4/6/2013 访问量:1115

问:

我正在使用 LightOpenID 根据 Google Apps 对 OpenID 进行身份验证。我发出了最初的authURL()请求,一切正常。我调用validate()但它失败了。通过大量的回声,我已经将其追踪到validate()的最后几行。

从 validate() 中,传递给 discover($url) 的 url 是https://www.google.com/accounts/o8/user-xrds?uri=http://my-domain.com/openid?id=117665028262121597341

discover() 首先检查不存在的 XRDS-location。discover() 接下来检查 content-type 是否为 XRDS+XML,这是真的。discover() 检查 Service(.*)/Service,这是真的。下面是 Service/Service 的片段

<Service priority="0">
<Type>http://specs.openid.net/auth/2.0/signon</Type> 

<Type>http://openid.net/srv/ax/1.0</Type>
<Type>http://specs.openid.net/extensions/ui/1.0/mode/popup</Type>
<Type>http://specs.openid.net/extensions/ui/1.0/icon</Type>
<Type>http://specs.openid.net/extensions/pape/1.0</Type>
<URI>https://www.google.com/a/<my domain>.com/o8/ud?be=o8</URI>
</Service>

discover() 看到我们正在使用 OpenID 2,并将 URI 字段提取到 $server 变量中。discover() 继续提取 CanonicalID,发现 Google 支持 AX 而不是 SREG。最后,discover() 返回 $server ashttps://www.google.com/a/my-domain.com/o8/ud?be=o8

validate() 继续清理 data[] 中的每个字段,具体取决于magic_quotes与否。它将 openid.mode 设置为“check_authentication”,请求 discover($url) 返回的$server和 preg 返回的 '/is_valid:true'。正是这最后preg_match失败了。$server URL 不会返回验证,而是显示“您请求的页面无效”。

我正在寻找的答案是 Google Apps 验证的正确网址。紧随其后的是 url 应该是什么样子,我将深入研究 Google Apps 返回的信息,看看我是否有类似的东西。

添加:不确定这是否重要,但我确实有一个 /.well-known/host-meta 文件。以下是内容:Link: <https://www.google.com/accounts/o8/site-xrds?hd=my-domain.com>; rel="describedby http://reltype.google.com/openid/xrd-op"; type="application/xrds+xml"

如果您需要更多代码或数据,请告诉我。

谢谢 埃里克·

php openid google-apps lightopenid

评论

0赞 Greg 5/15/2012
我在使用 Google Apps 和 LightOpenId 时遇到了同样的困难......不过,它最近才开始发生。
0赞 Greg 1/9/2013
现在我回来了,差不多一年后,同样的问题。我几乎还记得去年是什么让这个问题消失了——再次尝试谷歌搜索,看看它把我带到了哪里......
0赞 ethrbunny 3/11/2013
一些可能的答案:stackoverflow.com/questions/3995011/...... stackoverflow.com/questions/14752715/......

答:

0赞 Th. Ma. 4/6/2013 #1

确保服务器上已安装 PHP curl 扩展。我们最近在生产中遇到了完全相同的症状,这与服务器配置问题有关。

如果您在 Debian 上运行应用程序,只需使用:

apt-get install php5-curl