11

私たちはSPA(完全なクライアントベースのJavaScriptアプリケーション)を開発しており、内部にアクセスするにはユーザーを認証する必要があります。

検索からわかったように、認証メカニズムを外部委託し、そのためにGoogleアカウントを使用することができます。このサイトから学びました https://developers.google.com/accounts/docs/OAuth2Login-GoogleAPI扱い方と認証のメカニズム

簡単に言うと、次のものが必要です。

  • paramsを使用してGoogleURLにリクエストを送信し、SPAが個人データを使用できるようにするようユーザーに依頼します
  • 成功した場合、Googleからトークンを取得します
  • このトークンを使用して、要求されたAPIにアクセスし、それを操作することができます。

これはよく説明されており、私はそれを理解しており、それを実現するためのJSコードをいくつか持っています。

わからないこと

プライベートデータを使用したアプリケーションがあります。ユーザーの電子メールをログインとして使用するか、ユーザーID(呼び出し方法は関係ありません)を使用して、ユーザーが作成したタスクやユーザーのプロファイルなどのアプリの内部にアクセスします。したがって、ユーザーが作成したタスクをSPAに表示します。ユーザーの電子メールを含むクエリデータベースが必要です。

私は次のシナリオを想像します:

  • ユーザークリックLogin with Googleボタン
  • トークンを取得します-これは、ユーザーが正常に認証されたことを意味します
  • 私たちはユーザーと彼の電子メールをSPAと連携するために永続化します
  • ユーザーがクリックLogoutすると、すべてのアクセスデータがクリアされます

このデータはどこに保存すればよいですか?

ログイン/パスワードをサーバーに渡し、データベースと一致する場合は、作成してCookieに保存することForms Authenticationを理解しています。Forms Ticket

Googleの認証に同様のケースはありますか?ユーザーのメールをCookieに保存する場合、セキュリティ上の理由からあまり良くないと思います。トークンを保存する場合-トークンが必要な理由とSPAでの使用方法がわからないため、認証後にGoogleAPIを使用していません。

同様のケースでプロセスをどのように構築するかという例はありますか?

ありがとうございました。

4

1 に答える 1

6

必要なのがユーザーの電子メールアドレスだけである場合は、OAuthの代わりにOpenIDを使用することをお勧めします。OAuthは、特定のリソースまたはリソースのセットを対象とした、ユーザーのアカウントとサービスへのアクセスを提供します。OpendIDは、サードパーティのサービスにログインするためだけに設計されています。次に、OpenIDログインからユーザーのIDと電子メールアドレスを抽出できます。注:IDは常に送信されますが、認証中に電子メールアドレスを明示的に要求する必要があります。

Googleは、認証が必要なリソースがある場合にOpenIDログインに加えてOAuthリクエストをピギーバックできるハイブリッドOpenID+OAuthスキームもサポートしています。認証ドキュメントを見て、両方のプロトコルがどのように機能し、どちらがシナリオに適しているかを理解してください。

メールアドレスを返送したら、それをCookieに保持しないでください。通常推奨される処理方法は、セッションパラメータとして追加することです。そうすれば、セッションCookieのみがクライアントに保存され、サーバーはそれを使用して必要な値を見つけることができます。この回答には、違いと、セッションとCookieをいつ使用するかについての適切な説明があります。

于 2013-01-15T21:50:55.680 に答える