37


35

誰もが私がpythonとgoogle app engineを使ってカスタム認証プロセスを作成する方法を学ぶことができる場所を知っているか知っていますか?

認証にGoogleアカウントを使用したくないし、自分のユーザーを作成できるようにしたいです。

グーグルアプリエンジンに特化していないのであれば、pythonとdjangoを使った認証の実装方法に関するリソースはありますか?

10 回答


20


さてdjango 1.0が今日Google AppEngineに更新されました。 しかし、ユーザー認証は他のものと同じように行うことができます。これは非常に大規模なため、実際にはセッションを使用できないためです。

または、

あなたはあなた自身のユーザテーブルを作成し、パスワードをハッシュまたは暗号化し、そしておそらくトークンハッシュまたはuuidクッキーだけでセッションを模倣するトークンシステムを作成しなければなりません(セッションはとにかく単にクッキーです)。

私は基本的なgoogle.webappリクエストとレスポンスヘッダーだけでいくつかを実装しました。 私は一般的にユーザーIDとして主キーにUUIDを使用してからユーザーのパスワードを暗号化し、リセットのために彼らのEメールを持っています。

ユーザーにデータへの外部アクセスを許可したい場合は、OAuthでアプリケーションにアクセスしてください。

単にIDでデータを保存し、それがより消費者向けのものである場合は、おそらくstackoverflowのようにopenidを使用してからdjango profilesのようにその識別子にプロフィールデータを添付してください/)。

django 1.0は今日GAEで出ましたが、私は同じ問題が存在すると思います、セッションはありません、あなたは本当にあなた自身のストアセッションデータを作成しなければなりません。


10


これはすぐに使える解決策であり、うまく機能します。http://code.scotchmedia.com/engineauth/docs/index.html

Facebook、Google、Twitter、LinkedIn、GitHub、OpenId(Google App Engine経由)をサポートしています。

ユーザーを `+ / auth / facebook `または ` / auth / google +`などにリダイレクトするだけです(このURLはカスタマイズ可能です)。

また、2つのクラス、「+ User 」と「 UserProfile 」も実装します。すべての「 User 」はアプリ内の一意のアカウントであり、1つ以上の「 UserProfiles 」に関連する場合があります。 ` User +`はアプリにログインする必要があります(不明な場合は、私の英語が非常に悪いためです。http://code.scotchmedia.com/engineauth/docs/index.html [docs]で説明しています)。

P.S .:文書はあまり完成していませんが、コードはかなり単純で、短く、そして一目瞭然です。 また、https://groups.google.com/forum/#!topic/webapp2/Ui5FEFVnyIY[here]というディスカッションもあります。ここでは、混乱して混乱しているユーザーの質問に対するさまざまな回答を提供しています。


8


OpenIDコンシューマ(優れた「アプリエンジンサンプル」オープンソースプロジェクトの一部) )(現在はREADMEにある古い警告ですが)現在は機能しており、ユーザーのログインにOpenIDを使用することができます。

djangoのhttp://docs.djangoproject.com/en/dev/topics/auth/[auth]も使用できます。 http://code.google.com/p/google-app-engine-django/ [このプロジェクト](少なくとも `+ users `の部分。必ずしも ` groups `と ` permissions +`でなくても取得できますが、いつでも動作します)。


8


私はあなたが「アプリエンジンでのカスタムログイン」を検索する度に、これがグーグルでポップアップするのを見ました。 これがサンプルアプリケーションですhttps://github.com/fredrikbonander/Webapp2-Sample-Applications

これは

  1. webapp2(すでにGAE 1.6.2にあります)

  2. Jinja2(すでにGAE 1.6.2にあります)

Webapp2は、GAE(Webappの上に構築され、将来的にはその上に構築される)にとって最善の策であるように思われるので、GAEによってネイティブにサポートされているフレームワークを使用した認証が得策です。 他にもたくさんのフレームワークがありますが、それらを機能させるためにはユーザー側で多くのハッキングを行わなければなりません。 「安定した」サイトを作りたい人にとっては、このようなハッキング作業は非常に望ましくありません。

私はまたGAEに対するSQLのサポートが現在存在しており、djangoがネイティブにサポートされることを認識しています。 私たちは皆、djangoがユーザー認証システムを組み込んでいることを知っています。 とはいえ、特にクラウドの世界では、NoSQLが未来です。 私は将来的にNoSQLのためにdjangoと同じくらい良いフレームワークがあると確信しています。 しかしそれは私にとって、あなたの要求は他のものを要求するかもしれないということです。


7


http://blog.abahgat.com/2013/01/07/user-authentication-with-webapp2-on-google-app-engine/ [とユーザー認証Google App Engineのwebapp2]、および関連するhttps://github.com/abahgat/webapp2-user-accounts[GitHubリポジトリ: + abahgat / webapp2-user-accounts +]。


4


Djangoについては、http://code.google.com/p/app-engine-patch/[app-engine-patch]をご覧ください(ご質問から前提のフレームワークです)。 それはGAE上で認証を提供しています。

あるいは、http://www.web2py.com [web2py]をご覧ください。 これは、GAEおよびリレーショナルデータベースで機能するPythonベースのフレームワークです。 組み込みのAuthオブジェクトは、ユーザー、グループ、および権限を提供します。

それはBigTableへの束縛されていないアクセスを与えません、その代わりにリレーショナル機能のサブセットを提供します(BigTableは例えばJoinsをサポートしません、そしてweb2pyはBigTableモデルをまだサポートしていません)。

BigTableのサポートはWeb2pyとDjangoの両方のコミュニティで議論されています。


2


私はしばらくの間、app engine用のカスタム認証システムを探し回っていました。 私は最終的にappエンジンでフラスコを動かすことにしました。 私はアプリエンジンhttps://github.com/kamalgill/flask-appengine-template/およびこのフラスコ認証拡張機能http://pypi.python.org/pypi/Flask-Auth/でフラスコを実行するためにこの定型句を使用しました。 Google App Engineサポートをプラグアンドプレイします。 flaskにはとても素敵なoAuthライブラリもあるので、最終的にはFacebookやTwitterのログインを追加するのが簡単になると思います


1


他のすべての素晴らしい答えに加えて、私はまたそれを追加します Facebook、https://dev.twitter.com/docs/auth/oauth/single-例のuser-with-examples[Twitter]および Facebook、https://dev.twitter.com/docs/auth/oauth/single-例のuser-with-examples[github]はすべて、アプリのターンキー認証サポートとして利用できるOAuthメカニズムを提供しています。


1


他の選択肢は Beeakerモジュールです。 クライアント側セッションのAES暗号化は素晴らしいです。