gpt4 book ai didi

php - LightOpenID validate() 在 Google Apps 上失败

转载 作者:行者123 更新时间:2023-12-03 01:00:48 26 4
gpt4 key购买 nike

我正在使用 LightOpenID 针对 Google Apps 验证 OpenID。我发出初始 authURL() 请求,一切都很好。我调用 validate() 但失败了。通过大量的 echo ,我已经追踪到 validate() 的最后几行。

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

discover() 首先检查 xrds 位置,但该位置不存在。 discovery() 接下来检查内容类型是否为 xrds+xml,这是正确的。 discovery() 检查 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 变量中。 discovery() 继续提取 CanonicalID,发现 Google 支持 AX 而不是 SREG。最后,discover() 将 $server 返回为 https://www.google.com/a/my-domain.com/o8/ud?be=o8

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

我正在寻找的答案是 Google Apps 验证的正确网址。紧随其后的是网址应该是什么样子,我将深入研究 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"

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

谢谢,埃里克·B.

最佳答案

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

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

apt-get install php5-curl

关于php - LightOpenID validate() 在 Google Apps 上失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5463029/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com