2011-03-28 41 views
10

我使用LightOpenID根據Google Apps對OpenID進行身份驗證。我做了初始的authURL()請求,事情很好。我調用validate()並且失敗。通過豐富的回聲,我將它追蹤到最後幾行validate()。LightOpenID驗證()在Google Apps上失敗

從驗證(),通入查詢($ URL)鏈接是https://www.google.com/accounts/o8/user-xrds?uri=http://my-domain.com/openid?id=117665028262121597341

發現()用於XRDS-位置,這是不存在的第一檢查。 discover()接下來檢查內容類型是否爲xrds + xml,這是真的。 discover()檢查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> 

發現()認爲,我們正在使用的OpenID 2,提取URI場到$服務器變量。 discover()繼續提取CanonicalID,發現Google支持AX而不是SREG。最後,discover()返回$ server作爲https://www.google.com/a/my-domain.com/o8/ud?be=o8

validate()繼續清理數據[]中的每個字段,具體取決於是否使用magic_quotes。它將openid.mode設置爲'check_authentication',請求由discover($ url)返回的$ server和preg的'/ is_valid:true'。這是最後一次preg_match失敗。 $服務器網址不會返回驗證,而是會顯示「您請求的網頁無效」。

我在尋找的答案是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.

+0

我遇到了谷歌企業應用套件和LightOpenId同樣的困難......這只是開始,雖然最近發生的事情。 – Greg 2012-05-15 14:05:04

+0

現在我回來了,差不多一年後,同樣的問題。我幾乎可以記得去年發生了什麼問題 - 嘗試再次使用谷歌搜索,看看它帶我... – Greg 2013-01-08 16:45:15

+0

一些可能的答案:http://stackoverflow.com/questions/3995011/log-in-the-user- with-lightopenid http://stackoverflow.com/questions/14752715/implementing-openid-with-php/14754571#14754571 – ethrbunny 2013-03-10 16:13:50

回答

0

確保PHP curl擴展已安裝在服務器上。我們最近在生產中遇到了完全相同的症狀,這與服務器供應問題有關。

如果你正在運行Debian的一個應用程序,只需使用:

apt-get install php5-curl