我使用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.
我遇到了谷歌企業應用套件和LightOpenId同樣的困難......這只是開始,雖然最近發生的事情。 – Greg 2012-05-15 14:05:04
現在我回來了,差不多一年後,同樣的問題。我幾乎可以記得去年發生了什麼問題 - 嘗試再次使用谷歌搜索,看看它帶我... – Greg 2013-01-08 16:45:15
一些可能的答案: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