web-dev-qa-db-ja.com

Google App Engineでのカスタム認証

PythonとGoogle App Engineを使用してカスタム認証プロセスを作成する方法を学ぶことができる場所を知っている人や知っている人はいますか?

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

Google App Engine専用ではない場合、PythonおよびDjangoを使用して認証を実装する方法に関するリソースはありますか?

37
dtc

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

http://gaeutilities.appspot.com/ にセッションユーティリティがあります

http://gaeutilities.appspot.com/session

http://code.google.com/p/gaeutilities/

または、

独自のユーザーテーブルを作成し、パスワードをハッシュまたは暗号化する必要があります。次に、トークンハッシュまたはUUID Cookieのみでセッションを模倣するトークンシステムを作成する必要があります(セッションはとにかくCookieのみです)。

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

データへの外部アクセスをユーザーに許可する場合は、OAuthでアプリケーションアクセスを確認できます。

IDでデータを保存したいだけで、より消費者向けの場合は、openoveridをstackoverflowのように使用し、プロファイルデータをその識別子にDjangoプロファイル( http: //code.google.com/p/openid-selector/ )。

Django 1.0がGAEで本日リリースされたばかりですが、同じ問題が存在すると思います。セッションはありません。セッションデータを格納する独自のものを作成する必要があります。

20

これはかなりすぐに使えるソリューションであり、かなりうまく機能します: http://code.scotchmedia.com/engineauth/docs/index.html

Facebook、Google +、Twitter、LinkedIn、GitHub、OpenId(Google App Engine経由)のサポートが組み込まれています。

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

また、UserUserProfileの2つのクラスも実装します。すべてのUserはアプリ内の一意のアカウントであり、1つ以上のUserProfilesに関連している可能性があります- 1つは、固有のUserがアプリにログインするためのログイン戦略です(不明な場合は、私の英語が非常に悪いため、 docs で詳しく説明しています)。

追伸:ドキュメントは完全ではありませんが、コードは非常にシンプルで短く、自明です。また、ディスカッション here があり、著者は混乱し始めたユーザーの質問に対するさまざまな回答を提供します。

10
fiatjaf

「アプリエンジンでのカスタムログイン」を検索するたびに、これがgoogleにポップアップ表示されるのを見たので、役立った答えを出すことにしました。これがサンプルアプリケーションです 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と同じくらい優れたフレームワークが必ずあると思います。しかし、私にとって、あなたの要件は他の何かを要求するかもしれません。

8
specialscope

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

Djangoの auth も使用できます。 このプロジェクト (少なくともusersの部分。必ずしもgroupspermissionsではありませんが、いつでも動作する可能性があります)。

8
Alex Martelli

Google App Engine上のwebapp2を使用したユーザー認証 と題された、優れた比較的最近の(2013年1月の)ブログ投稿は次のとおりです GitHubリポジトリ:abahgat/webapp2-user-accounts

7
Brian M. Hunt

見てください app-engine-patch for Django(私があなたの質問から推測するあなたの好みのフレームワーク)これはgaeでの認証を提供します。

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

ただし、BigTableへの無制限のアクセスは提供せず、代わりにリレーショナル機能のサブセットを提供します(たとえば、BigTableは結合をサポートせず、web2pyはBigTableモデルをサポートしていません)。

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

4
Carl

しばらくの間、App Engineのカスタム認証システムを探していました。私は最終的にflaskをアプリエンジンで実行することで解決しました。この定型文をアプリエンジンでflaskを実行するために使用しました https://github.com/ kamalgill/flask-appengine-template / and this flask auth extension http://pypi.python.org/pypi/Flask-Auth/ 付属プラグアンドプレイのGoogleアプリエンジンサポートを使用します。flaskにも非常に優れたoAuthライブラリがあるため、最終的にはFacebookやTwitterのログインを簡単に追加できます

2
Dane Jensen

私がcotoで取り組んでいるこのプロジェクトを見てください: https://github.com/coto/gae-boilerplate これには、完全に機能するカスタムが含まれています認証システムなど。

1
peta15

別のオプションは ビーカーモジュール です。クライアント側セッションのAES暗号化は素晴らしいです。

1
rezsa f

他のすべての素晴らしい答えに加えて、 FacebookTwitter 、および github all offer OAuthアプリのターンキー認証サポートとして利用できるメカニズム。

1
mvanveen