2012-09-18 12 views
5

私はこのOauthのコンセプトについて研究しており、私はまだこのコンセプトについて非常に混乱しています。私の主な質問の1つは、Googleアカウントまたはツイッターアカウントに登録する方法です。ユーザーはどのようにOauthに登録しますか?

たとえば、自分のウェブサイトに登録するには、ユーザー名/パスワード/電子メール/グループ名を入力する必要があります。私のウェブサイトから登録すれば、それらのフィールドを非常に簡単に提供することができます。しかし、ユーザーがGoogleを使用して登録したいとします。これらのフィールドはどのように埋め込まれますか?

Google認定資格に登録すると、私のウェブサイトのページにリダイレクトされ、必要なフィールドに記入されます。これが正しいかどうかはわかりません。誰も私がこれ以上理解できるように助けることができますか?

+0

あなたが話しているのはどのOauthですか。異なったものがあり、また壊れていると考えられます。 – hakre

+0

Oauthで認証する場合、なぜユーザー名とパスワードが必要ですか?電子メールとグループの場合は、別の登録ページが必要です。 Googleアカウントではメールアドレスを取得できますが、他のOauthアカウントではアカウントが利用できない可能性があります。 – mcrumley

+0

@hakra OAuthは*壊れていません*、正しく実装されていれば安全に使用できます。それには、多くのユースケースを考慮したほぼすべての標準として、その短所と複雑さがあります。 –

答えて

6

基本的にはOAuthは、この(これらの点は、複数のステップで構成されたバージョンによって異なります)のように動作します:あなたは、彼が

  • にユーザーがあなたに戻ってリダイレクトされるログインするプロバイダにユーザーをリダイレクト

    • あなたは、このアクセストークンあなたは、プロバイダからのユーザーデータを要求することができますを使用して

    トークンアクセスを受けます。通常、プロバイダは、ユーザのメールアドレス、氏名、および(プロバイダ固有の)ユーザIDを要求するために使用できるコールを提供しますが、これはOAuthの一部ではありません。

    この情報を使用して、自分のサイトにログインしているかのように、そのユーザーを完全に自分のものとして扱う方法。新しいユーザーIDが表示されるたびに、新しいユーザーオブジェクトを作成したいと思うかもしれません。

  • +0

    O参照してください。だから私が正しく理解していれば、ユーザーが自分のGoogle電子メール/パスワードでログインしたら、それを自分のページにリダイレクトして残りの資格情報を記入する必要がありますか? – user1436497

    +0

    @ user1436497できますが、それは悪いUXになります。 – Mahn

    0

    OAuth2を使用して新しいユーザー登録がどのように行われるかを理解するには、いくつかの明確な概念が必要です。これらは次のとおりである:

    • リソースの所有者(あなた、ヒト)
    • IDプロバイダ(グーグル、FacebookやTwitterなど)
    • リソースサーバー(アイデンティティプロバイダ、またはいくつかの他のサービスと同じ)
    • リソース(あなたがへのアクセスを欲しいもの)
    • クライアントアプリ(あなたはそれらのものにアクセスするために使用されているアプリ)、新規ユーザ登録について

    、あなたは番目に従いますeクライアントアプリケーションと同じシーケンスで、リソースへのアクセスを許可する許可を要求します。これにより、ログインページが起動され、ユーザーがログインし、(IdPによって)承認コードが作成され、クライアントアプリケーションに返送されます。クライアントアプリケーションはこのコードをアクセストークンに交換します(一部の暗号化署名が含まれています。ドキュメントを読む - 基本的にクライアントアプリケーションが独自のIDを証明できるようにする)。

    このアクセストークンは、リソース(この場合は新しいユーザープロファイル)へのアクセスを要求するために使用されます。これは、名前、電子メール、画像などである可能性があります。これを使用して、クライアントのアプリケーションプロファイルデータベースに新しい行を作成します。新しいユーザーアカウントが作成されます。

    その後のログインでは、クライアントアプリケーションはこのアクセストークンを使用してGoogle認証サーバーの有効期限を確認し、ローカルセッション/ Cookieを作成してユーザーにログインします。

    これは明らかです。

    関連する問題