1

組織のユーザーが、組織が提供する Google Apps アカウントでログインするサイトを構築しています。このサイトでは、DotNetOpenAuth の標準 OpenID サンプル コードを使用して、Google OpenID プロバイダーで認証します。

この Google Apps ドメインで OpenID が有効になっていますが、https://google.com/accounts/o8/site-xrds?hd=domain.comエンドポイント経由でユーザーを認証しようとすると、次のエラーが発生します。

ダイレクト メッセージの送信中または応答の取得中にエラーが発生しました。

ただし、標準のhttps://www.google.com/accounts/o8/idエンドポイントを使用して Google Apps アカウントでサインインすると、機能します!

同じ Google Apps アカウントで 2 つの異なる結果が生成されるのはなぜですか。一方のエンドポイントは機能し、もう一方のエンドポイントは正しく認証されません。

4

1 に答える 1

1

Google Apps は、OpenID 2.0 プロトコルに厳密には準拠していません。これには、DotNetOpenAuth がデフォルトでオンにしていない独自の検出メカニズムがあります。

OpenIdRelyingPartyWebForms プロジェクトの loginGoogleApps.aspx ファイルにあるSourceForge のサンプルを確認してください。コード ビハインドが Google Apps ディスカバリを OpenIdRelyingParty クラスに追加することがわかります。これができれば、あなたにも効果があると思います。

于 2013-02-11T05:20:04.670 に答える