2

私はJavaScript(クライアント)とPython/Google App Engine(サービス)でWebアプリケーションを作成しています。ここでユーザーにデータを追加してもらいたいのですが。私はサインイン/サインアップボックスを持つウェルカムページを作成しました。正しいユーザー名/パスワードを入力した後、ユーザーに権限を与えてWebアプリケーションページに転送し、指定されたユーザーのID、つまり(ホスト/ {userid}/some_resource)を持つRESTfulサービスにAJAXリクエストを送信させます。サービス側では、ユーザーが承認されていることを確認してください。RESTful Webアプリケーションの認証はどのように実装できますか?

どのようにしてすべてを安全にすることができますか(つまり、クリアテキストでユーザー名とパスワードを送信しないでください)。私は "HTTP認証"や "セッション"のような "流行語"を見つけましたが、そのようなものを実装する方法についての信頼できる明確な記事を見つけることができませんでした。

また、さまざまな人気サイトが承認を処理する方法(つまり、GmailはHTTPSで動作します; StackoverflowとFacebookはHTTPを使用するようです)。

答えて

3

私は車輪を再発明するファンではないので、GAEに組み込まれているGoogleアカウント(またはOpenID)の組み込み、またはDjangoユーザー認証と一緒に行くことをお勧めします。 GAEパイソンの

Googleアカウント/のOpenID:http://code.google.com/appengine/docs/python/users/

Djangoの認証:https://docs.djangoproject.com/en/dev/topics/auth/

あなたがユーザを管理し、ジャンゴと、あなたはまた、アクセス権の枠組みを取得するために必要なすべてを持ってこの方法です。

+0

私はGoogleアカウント/ OpenIDに行く予定ですが、ユーザーに固有の表示名が必要です。 Googleアカウント/ OpenIDでこれを行うことはできますか? – Stefan

+0

ユーザーに一意の識別子が割り当てられています。フェデレーション認証(OpenID)の下で、GoogleはユーザーをユーザーAPIで取得した他のユーザーとして扱います。完全なドキュメントは次のとおりです:http://code.google.com/appengine/articles/openid.htmlこの機能はまだ実験中です。 – Sologoub

+1

@Stefan初めてログインすると、表示名を選択するようにユーザーに指示するだけです。 –

1

基本的にはセッションです。ユーザーがログインすると、サーバーにセッションまたはユーザーを指定する一意のトークンが返されます。ユーザーが後続のリクエストを行うたびに、サーバーはトークンをチェックして、ユーザーが何をしようとしているのかをユーザーが確認できるようにトークンを戻します。

通常、Webアプリケーションでは、サーバー側でセッションを作成し、そのトークンをクッキーとして渡します。ユーザーのブラウザーは、サーバーがユーザーが認証されたことを確認できるように、各要求時にこのトークンをサーバーに自動的に送信します。これは、Gmail、Stack Overflow、Facebook(そしてほぼすべてのウェブサイト)の機能です。

GAEのクッキーを使用する場合は、組み込みのGoogleユーザーシステムを使用できます。セッションとCookieが自動的に作成されます。ユーザーAPIを使用してログインしているユーザーを特定するだけです(GAEドキュメントのユーザー例を参照)。ユーザーにGoogleアカウントを持たせたくないため、Googleのユーザーシステムを使用したくない場合は、独自のセッションシステムを使用するか、GAE-Sessions(https:// github .com/dound/gae-sessions)。そのサイトには、その使用方法に関するサンプルコードがいくつかあります。

その他:Webブラウザで厳密には使用されていないRESTful APIは、認証にCookieを使用しないことがよくあります。ユーザーは、ユーザーが作成されたときに各ユーザーのトークンを作成するか、ユーザーがログインすると(ログイン要求に対する応答でトークンを戻します)、ユーザーはそのトークンを次のようにサーバーに戻します。パラメータまたはHTTPヘッダーのいずれかです。

上記の両方のケースでは、HTTPS経由でログインが実行され、残りのアクションはHTTP経由で実行される可能性があります。ただし、クライアントからサーバーに渡されるトークンは、 HTTP上で安全でないことが送信されました。たくさんのセッションシステムはセッションが属するIPアドレスを追跡します。誰かが自分のトークンをコピーしてセッションをハイジャックしようとすると、それを得ることはできませんが、そうしないと良い理由がない限り、HTTPSをすべて使います。

関連する問題