LightOpenIDを使用してGoogleアプリに対して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であるかどうかをチェックします。これはtrueです。Discover()はService(。*)/Serviceをチェックします。これはtrueです。これがサービス/サービスのスニペットです
<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がSREGではなくAXをサポートしていることを検出します。最後に、discover()は$serverを次のように返します。https://www.google.com/a/my-domain.com/o8/ud?be=o8
validate()は、magic_quotesであるかどうかに応じて、data[]の各フィールドをクリーンアップして続行します。openid.modeを'check_authentication'に設定し、discover($ url)によって返される$serverと'/ is_valid:true'のpregを要求します。失敗するのはこの最後のpreg_matchです。$ server urlは検証を返しませんが、代わりに「要求したページは無効です」と表示します。
私が探している答えは、Googleアプリの検証用の正しいURLです。すぐに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"
より多くのコードまたはデータが必要な場合はお知らせください。
ありがとう、エリックB。