7

今日、私たちのサイトの一部のユーザーが私たちの組織の YouTube アカウントに動画をアップロードできるようにする Google APIを入手しました。ユーザーにユーザー名とパスワードを知られたくないのですが、YouTube に動画をアップロードするかどうかを選択できるようにします。彼らがそれを行うことを選択した場合、チェックボックスをオンにして送信ボタンを押します。

私がやりたいことを実装するための最良のオプションのように見える ClientLogin は、Web アプリケーションでのユーザー認証にはお勧めできません。「Web アプリケーション用の AuthSub」は、私が実装したいものに最適なメカニズムではないようです!

何をすべきかについてのアイデアはありますか?

ありがとうございました

4

3 に答える 3

3

グーグルAPIと他のビデオサービスプロバイダーAPIで遊んだ後、私は認証について多くを学びました。oAuthとAuthSubは、Googleがサードパーティのウェブアプリケーションをユーザーアカウントに対して認証するために使用する2つの方法です。

プロセスは最初は厄介に見えるかもしれませんが、一度理解すれば、それほど悪くはありません。次の画像は、AuthSubプロセスを示しています。

代替テキスト

  1. WebアプリケーションがユーザーのGoogleサービスにアクセスする必要がある場合、WebアプリケーションはGoogleのAuthorizationProxyサービスに対してAuthSub呼び出しを行います。
  2. 承認サービスは、アクセス要求ページを提供することで応答します。このGoogleが管理するページは、ユーザーにGoogleサービスへのアクセスを許可/拒否するように促します。ユーザーは最初に自分のアカウントにログインするように求められる場合があります。
  3. ユーザーは、Webアプリケーションへのアクセスを許可するか拒否するかを決定します。ユーザーがアクセスを拒否すると、Webアプリケーションに戻るのではなく、Googleページに移動します。
  4. ユーザーがアクセスを許可すると、承認サービスはユーザーをWebアプリケーションにリダイレクトします。リダイレクトには、1回の使用に適した認証トークンが含まれています。寿命の長いトークンと交換できます。
  5. ウェブアプリケーションは、認証トークンを使用してユーザーのエージェントとして機能し、リクエストでGoogleサービスに接続します。
  6. Googleサービスがトークンを認識すると、要求されたデータを提供します。

http://code.google.com/apis/accounts/docs/AuthSub.html#AuthProcess

認証をリクエストし、ユーザーが自分のgoogleアカウントにサインインする場合、ユーザーが自分のアカウントで何かを行うためのアプリケーションの許可を与える前に、ドメインがgoogleに登録されていない場合、ユーザーはアクセスを許可しようとしているアプリが登録されていないため、注意するように指示する厄介な赤いボックス。

古い学校のユーザー名とパスワードに対するこれらの方法の利点は、(私の意見では)次のとおりです。

  1. ユーザーのセキュリティの強化:ユーザーはユーザー名とパスワードを入力する必要はありません。ユーザーはGoogleにログインする必要があり、さらにAPI呼び出しを行うために使用するアクセストークンを取得します。ユーザーは、必要に応じて、Google内からアプリケーションへのアクセスを取り消すことができます。
  2. このプロセスにより、ユーザーはアプリが「合法」であることが保証される場合があります。ユーザーがログインしてアプリを許可するためにGoogleを経由する必要がある場合、ドメインがgoogleに登録されていれば見栄えがよい場合があります。
  3. トークンはセッショントークンに昇格できます。つまり、Googleユーザーアカウントへのアクセスをリクエストするたびにユーザーにログインを要求する必要はなく、セッショントークンを使用するだけです(どこかに安全に保存する必要があります)。これで完了です。
  4. プロセスを理解すれば、ユーザーの認証は非常に簡単です。
  5. (未確認)ユーザーがパスワードを変更した場合、セキュリティトークンを更新する必要はありません。
  6. 最後に、oAuthを使用すると、Vimeoなどの他のWebサービスに接続するときにユーザーを簡単に認証できるインターフェイスを作成できます。

これらすべてを踏まえると、ユーザー名とパスワード(ClientLoginが行うこと)を使用してユーザーアカウントに接続することがなぜ悪い考えであるかを理解できると思います。他の認証方法では、同じこと(アクセスの要求)を実行して、多くの利点を追加できます。

AuthSubを使用してユーザーを認証する方法のコードは、ここにあります。これは、ほとんどプラグアンドプレイです。$_SESSION['sessionToken']をDBなどのより永続的な場所に保存してください。

http://code.google.com/apis/youtube/2.0/developers_guide_php.html#AuthSub_for_Web_Applications

于 2010-03-31T20:50:21.730 に答える
2

アプリケーションはユーザーのログイン資格情報を処理する必要があるため、ClientLoginはここでは推奨されるメカニズムではありません。ユーザーのIDをセッションよりも長く確立する必要がある場合、資格情報を保存する必要があり、これは理想的ではありません。サーバーの侵害は、Googleユーザーの侵害につながります。したがって、ClientLoginはアプリケーションにとって適切なアプローチではありません。

Google OAuthを見たことがありますか?これは、パスワード処理の問題を非常にエレガントに解決し、確立された標準です。

于 2010-07-09T18:13:27.347 に答える
0

私は同じ問題を抱えていて、最終的に ClientLogin を使用しました。ユーザーにログイン プロセスのどの部分も見せたくない場合は、これで十分です。

AuthSub やその他の認証方法でこれを行うためのより良い方法があるかどうかはわかりません。

于 2010-02-09T19:17:07.533 に答える