10

Google アプリと統合する django アプリを開発しています。ユーザーが自分の Google アプリ アカウント ( Google アカウントではなく、Google がホストするドメインのアカウント) でログインできるようにして、ドキュメント、カレンダーなどにアクセスできるようにしたいと思います。

それを行うために、django_openid_auth (したがって、python-openid) をダウンロードして使用を開始しました。

まず、テストするために、設定で次の URL を使用しました。

OPENID_SSO_SERVER_URL = 'https://www.google.com/accounts/o8/id'

それで、ユーザーをGoogleアカウントページにリダイレクトしてログインし、自分のドメインに戻ることができました.Googleの人々が説明した認証サイクルが正常に完了しました. ただし、ホストされているドメインにGoogleアプリアカウントを持っているが、Googleアカウントは持っていないユーザーにログインしてもらいたいので、Googleアカウントにログインすることはほとんど役に立ちません。そのために、ディスカバリに関する Google の記事「ホストされたドメインの OpenID エンドポイントのディスカバリ」を読み、前述の設定を次のように変更しました。

OPENID_SSO_SERVER_URL = 'https://www.google.com/accounts/o8/site-xrds?hd=<my-domain>.com'

-明らかに、<my-domain>私の実際のドメインは ;)

しかし、バックエンドは次のメッセージで応答しました:

OpenID 認証に失敗しました: ID URL ホストからの HTTP 応答ステータスが 200 ではありません。ステータス 404 を取得しました

少しデバッグしたところ、python-openid (バージョン 2.2.4) のコードが google からの応答を誤って解釈しているものであることがわかりましたが、ここでかなり途方に暮れています。

socialwok.com と puffypoodles.com で自分のドメインの認証が機能するのを見たので、Google Apps ドメインの認証サイクルが機能することは確かですが、どういうわけか python-openid はそれを完了できないようです (ただし、繰り返しますが、普通の古い Google アカウントで問題なく動作します)。

python-openid を修正しようとする必要がありますか、またはこれを修正する別の方法はありますか? 純粋なdjangoアプリ( Googleアプリエンジンではなく)でGoogleアプリでログインできた人はいますか?

4

2 に答える 2

8

http://groups.google.com/group/google-federated-login-api/web/openid-discovery-for-hosted-domainsによると、Google は IdP Discovery とユーザー XRDS チェックの方法を少し変更して、 Google Apps ユーザーはhttp://example.com/openid?id=108441225163454056756形式の openid を使用しており、ユーザーに独自の openid サーバーを構築するよう依頼する必要はありません。小規模な企業の場合、Google Apps を使用すれば、ドメイン名だけで自分のドメインで openid を取得できます。

人々は認証に Google Apps アカウントを使用でき、将来的に認証バックエンドを変更できる独自のドメインで openid を提供できるため、これは良いアプローチかもしれません。シンプルで拡張可能ですが、残念ながらまだ標準にはなっていません。そのため、python-openid などの標準ライブラリを使用すると、いくつかの問題が発生します。

これらの問題を解決するには、python-openid に自分でパッチを当てて、Google のアプローチに従う必要があります。

以前に同じ問題に遭遇しましたが、パッチを適用したバージョンの python-openid v2.1.1 を使用しています。

必要に応じて、クリーンアップ後にコードを投稿できます。これは簡単なパッチだったので、あまり期待しないでください :)

于 2010-04-04T16:33:40.403 に答える
1

http://github.com/hudora/django-googleappsauthを試すことができると思いますが、バグを修正してコメントを翻訳しようとして いるバグを見つけました

于 2011-12-08T22:47:28.800 に答える