1

私は、digg.comや他の同様のサイトがoauthを介した認証をどのように処理するかを正確に把握しようとしています。oauthを介してアカウントを作成するのは非常に簡単です。ユーザーがtwitter/facebook接続ボタンをクリックすると、diggがシークレットを送信します。すべてが機能すると、このシークレットが返され、アクセストークンとして保存されます。

しかし、認証はこのようにどのように機能しますか?たとえば、ツイッターボタンでログインをクリックすると、ランダムなシークレットがツイッターに送信されます。代わりに、Twitterは以前のアクセストークンを返しますか、それともdiggはTwitterユーザーIDを取得し、それをdbに保存されている値と比較して、そこから保存されているアクセストークンを使用しますか?

例:1。ユーザーがTwitter経由でログインをクリックします。2.シークレットが送信され、Twitterが処理を行い、username / id / etcなどの情報を返します...3。これらの戻り値のいずれかに基づいて、dbがポーリングされ、ユーザー行が読み込まれ、認証が成功します。

私はこれをやめていますか?誰かが私を教えてくれませんか?

4

2 に答える 2

1

以下は、hueniverseが提供するワークフローに基づいています。

ユーザーはTwitterからログインをクリックします。

TwitterからのDiggリクエストリクエストトークン(ユーザー固有ではなく、Diggはユーザーからユーザーの承認を得てユーザーの情報にアクセスするために使用できます)。

Diggはリクエストトークンを受け取り、RequestToeknを使用してユーザーをTwitter OAuthユーザー認証URLにリダイレクトし、承認が得られたらユーザーをリダイレクトするようにTwitterに要求します。

OAuthでは、サービスプロバイダー(Twitter)が最初にユーザーを認証し、次にコンシューマー(Digg)へのアクセスを許可するように依頼する必要があります。

ユーザーはユーザー名とパスワードを入力します(ユーザーがログインしていない場合)。

Twitterは、アクセスを要求しているユーザー(Digg)と許可されているアクセスのタイプをユーザーに通知します。(私はDiggに精通していないので、別の例としてStack Exchangeを取り上げます。これは、ユーザー名へのアクセスのみを要求します。)

ユーザーが承認します。

Twitterは、リクエストトークンをユーザー承認済みとしてマークします。ユーザーのブラウザはDiggにリダイレクトされます。

Diggは許可されたリクエストトークンを使用し、それをアクセストークンと交換します(保護されたリソースにアクセスするために使用されます。StackExchangeの場合、ユーザー名は少し奇妙に聞こえますが)。

DiggはTwitterからログインしています。

これが私による非公式の写真です: ここに画像の説明を入力してください


上記はOAuth1.0の公式ガイドに基づいていますが、OAuth2.0の紹介によると:

OAuth 2.0は完全に新しいプロトコルであり、以前のバージョンとの下位互換性はありません。ただし、以前のバージョンで確立された全体的なアーキテクチャとアプローチは保持されており、同じ紹介(OAuth 1.0の公式ガイドから)が引き続き非常に当てはまります。

于 2011-03-14T03:02:06.953 に答える
0

このような認証を実装したい場合は、この目的でTwitter、Facebook、Googleなどを使用する1つの方法を示す ZFアプリケーションの例をご覧ください。

于 2011-03-14T08:53:40.670 に答える