30

ログインに Google Apps を使用する会社のイントラネット django プロジェクト (GAE を使用しない) に取り組んでいます。そのため、ユーザーが Google アカウントのログインを使用して django プロジェクトにログインできるようにしたいと考えています。OpenID は適切と思われますが、Oauth も機能する可能性がありますか?

django の認証システムを外部ログイン システムに接続するために、似たような名前のライブラリがたくさんあります。

統合でやりたいことは次のとおりです。ネイティブのdjangoシステムではなく、ユーザーがGoogleアカウントでログインできるようにします。管理システムなどについては、django のパーミッション モデルを維持します。つまり、これまでに見たことのない新しいアカウントが初めてログインしたときに、django で新しいユーザー レコードが自動的に作成されることを意味すると思います。

これらのプロジェクトのいずれかを使用した経験のある人は、どれが最適かアドバイスできますか? または、試してみた場合に、どれが最もアクティブ/機能的であるかについてのアドバイスですか? ありがとう!

4

5 に答える 5

17

ようやくこれが機能するようになったので、ここでの以前の回答は役に立ちましたが、全体の話はしていないので、自分の質問に答えます。

django-openid-auth のセットアップと使用は実際には非常に簡単です。README ファイルは非常に明確です。標準の Google アカウント (つまり、@gmail.com アドレス) を使用するだけの場合は、settings.py で次のように構成します。

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

しかし、「Google Apps」アカウントを使用したい場合、つまり自社のドメインでホストされた gmail を使用したい場合は、さらに複雑になります。この質問から詳細を取得しました。Google Apps アカウントを使用するには、settings.py を次のように構成します。

OPENID_SSO_SERVER_URL = 'https://www.google.com/accounts/o8/site-xrds?hd=example.com'
# replace example.com with your hosted google apps domain

将来的にはこれでうまくいくかもしれませんが、今日はおそらくうまくいかないでしょう。問題は、django-openid-auth が依存する python-openid にあります。python-openid の標準ビルドは、Google が使用している一部のプロトコル拡張を認識しません。(Google がプロトコルを拡張する必要があるのはなぜですか? http://groups.google.com/group/google-federated-login-api/web/openid-discovery-for-hosted-domainsを掘り下げて報告してください。頑張ってください。 ) したがって、代わりに adieu の python-openid へのパッチを使用する必要があります。これは http://github.com/adieu/python-openidで入手できます。

これを既存の python-openid にインストールします。これで動作するはずです。

admin を使用するには「staff」または「superuser」の openid ユーザー アカウントが必要OPENID_USE_AS_ADMIN_LOGINになるため、設定には注意してください。これはデフォルトでは発生しません。そのため、openid を有効にし、openid でログインして django でアカウントを作成し、古い管理者アカウントを使用して自分の openid アカウントをスーパーユーザーとしてマークし、openid 以外の管理者を無効にする 2 段階のプロセスを実行する必要があります。アクセス。

もう 1 つ: これが機能する前に、ドメイン管理者がドメインの openid ログインを有効にする必要がある場合があります。コントロールはhttp://www.google.com/a/cpanel/example.com/SetupIdpにあります

于 2010-07-23T23:14:25.620 に答える
3

私はdjango-openid-authを使用しました。正常に動作し、初めて署名するときにユーザー アカウントを作成できます。また、django 管理パネルで openid ログインをユーザー アカウントに関連付けることもできます。

于 2010-07-01T13:10:44.437 に答える
1

私はこれが遅い答えであることを知っていますが、私は同様のことをしていて、django-socialregistrationを発見しました。これは基本的にOAuth、OpenID、Facebook Connectなどを実行します。他のいくつかのオプションとは異なり、多くのプロジェクトで積極的に開発され、使用されているようです。

于 2010-10-15T08:02:12.737 に答える
0

それらはすべてほぼ同じです。私はdjango-authopenidが好きです。優れたドキュメントがあり、非常に使いやすいです。それはあなたが望むことを正確に行い、django-openid(私が試した唯一の他のものです)よりも優れています。

HTH

于 2010-07-05T21:52:02.310 に答える
0

Django socialregistrationを使用すると、Google アカウント、Facebook、Yahoo、およびその他の OpenID サイトを非常に簡単にプラグインできることが気に入りました。次のようにプロバイダーをリンクとして提供するだけです。

<a href="/socialregistration/openid/redirect/?openid_provider={{ 'http://yahoo.com'|urlencode }}"><img src="{{MEDIA_URL}}/images/yahoo.png"/></a>

于 2010-07-02T11:11:52.310 に答える