web-dev-qa-db-ja.com

OAuth(Open Authorization)とは正確には何ですか?

OAuth(Open Authorization)とは正確には何ですか?

私はいくつかの情報を収集しました

しかし、もっと学び、もっと知りたいです。ライフサイクルに関する情報を探しています。ほとんどのソーシャルネットワークがこのオープンプロトコルに依存しているのはなぜですか?

近い将来、さまざまなテクノロジー(ASP.NETなど)のデファクトになりますか?

194
user372724

OAuth(Open Authorization)とは正確には何ですか?

OAuthでは、リソースプロバイダー(例:Facebook)にリソースオーナー(例:あなた)がサードパーティ(例:Facebookアプリケーション)彼らの情報へのアクセス(例:友人のリスト)。

あなたがそれを明白に読んだ場合、あなたの混乱を理解するでしょう。それでは、具体的な例を見てみましょう:さらに別のソーシャルネットワークに参加しましょう!

既存のGMailアカウントがあるとします。 LinkedInに参加することにしました。すべての多くの友人をすべて手動で追加するのは、面倒でエラーが発生しやすくなります。途中でうんざりしたり、メールアドレスにタイプミスを挿入して招待するかもしれません。結局、アカウントを作成しないように誘惑されるかもしれません。

このような状況に直面しているLinkedInには、コンピューターが面倒でエラーが発生しやすいタスクではるかに効率的かつ効果的であるため、友達リストを自動的に追加するプログラムを作成するGood Idea(TM)があります。ネットワークへの参加は非常に簡単になったので、方法はありません、あなたはそのような申し出を拒否するでしょう、今あなたですか

この連絡先リストを交換するためのAPIがなければ、LinkedInにGMailアカウントのユーザー名とパスワードを提供する必要があります。これにより、権限が過剰になります

これがOAuthの出番です。GMailがOAuthプロトコルをサポートしている場合、LinkedInはGMailの連絡先リストへのアクセスを許可するように求めることができます。

OAuthで可能なこと:

  1. さまざまなアクセスレベル:読み取り専用VS読み取り/書き込み。これにより、ユーザーリストへのアクセスまたは双方向アクセスを許可して、新しいLinkedInの友人をGmailの連絡先に自動的に同期させることができます。
  2. アクセスの粒度:連絡先情報(ユーザー名、電子メール、生年月日など)のみにアクセスを許可するか、友人、カレンダーなどのリストにアクセスを許可するかを決定できます。
  3. リソースプロバイダーのアプリケーションからのアクセスを管理できます。サードパーティのアプリケーションがアクセスをキャンセルするメカニズムを提供していない場合、サードパーティのアプリケーションはあなたの情報へのアクセスを持ち続けることになります。 OAuthを使用すると、いつでもアクセスを取り消すことができます。

近い将来、事実上の(標準?)になるでしょうか?

OAuthは大きな前進ですが、人々が正しく使用しなければ問題は解決しません。たとえば、リソースプロバイダーがすべてのリソースに一度に1つの読み取り/書き込みアクセスレベルのみを与え、アクセスを管理するメカニズムを提供しない場合、それは意味がありません。つまり、OAuthは、認証だけでなく、許可機能を提供するフレームワークです。

実際には、ソーシャルネットワークモデルに非常によく適合しています。サードパーティの「プラグイン」を許可したいソーシャルネットワークで特に人気があります。これは、リソースへのアクセスが本質的に必要であり、本質的に信頼性が低い領域です(つまり、これらのアプリケーションの品質管理がほとんど、またはまったくありません)。

私は野生で他の多くの使用を見ていません。つまり、技術的にはcould使用できますが、銀行の記録に自動的にアクセスするオンライン金融アドバイス会社を知りません。

316
André Caron

OAuthとは何ですか?

OAuthは、パスワードを公開せずにユーザーデータにアクセスするためのサードパーティアプリケーションの承認を処理する単純な承認プロトコルです。例えば。 (多くのWebサイトでfb、gPlus、Twitterでログインします。)すべてこのプロトコルで動作します。

関係者

関係者を知っていると、プロトコルが簡単になります。基本的には、oAuth Provider、oAuth Client、およびOwnerの3つの関係者が関与します。

  • oAuthクライアント(資格情報にアクセスするアプリケーション)
  • oAuthプロバイダー(例:facebook、Twitter ...)
  • 所有者(facebook、Twitter ..アカウントを持つ人)

使い方?

私は、ウェブサイト(stackoverflow)がfacebook機能でログインを追加する必要があるシナリオを想定しました。したがって、facebookはoAuth Providerであり、stackoverflowはoAuth Clientです。

  1. このステップは、アプリの開発者によって行われます。当初、facebook(oAuthプロバイダー)はstackoverflow(oAuthクライアント)についての知識がありません。これは、それらの間にリンクがないためです。したがって、最初のステップは、facebook developers site にstackoverflowを登録することです。開発者がアプリの名前、ウェブサイト、ロゴ、リダイレクトUrl(重要なもの)などのアプリの情報をFacebookに提供する必要がある場合、これは手動で行われます。その後、stackoverflowは正常に登録され、facebookからクライアントID、クライアントシークレットなどを取得し、OAUTHで稼働しています。 enter image description here

    2。stackoverflowのユーザーがfbボタンでログインをクリックすると Stackoverflowは、ClientId(fbを使用してクライアントを認識する)およびredirectUrl(成功後にこのURLに戻る)でfacebookを要求します。したがって、ユーザーはfacebookのログインページにリダイレクトされます。これが最良の部分ですuser(owner)はstackoverflowにFacebookの資格情報を与えていません。

enter image description here

enter image description here

  1. 所有者がStackoverflowに情報へのアクセスを許可した後。次に、Facebookは、ステップ2で提供されたredirectUrlを使用して、authcodeとともにstackoverflowにリダイレクトします。
  2. 次に、Stackoverflowは、取得したauthcodeとともにfacebookと通信して、すべてが正常であることを確認します。
  3. それからfacebookはアクセストークンをstackoverflowに与えます。次に、アクセストークンがstackoverflowによって使用され、パスワードを使用せずに所有者の情報を取得します。これはoAuthの全体的な動機であり、実際の認証ではサードパーティのアプリケーションに決してさらされません。

多くのための:

クイックビデオ

Webリンク

236
Balman Rawat

単純にOAuthを置くと、アプリケーションはユーザーのログイン情報をいくつかのWebサイトに直接取得することなく、情報の資格情報を取得できます。たとえば、独自のWebサイトでアプリケーションを作成し、ユーザーのFacebookアカウントのデータを使用する場合は、OAuthを使用してコールバックURLを介してトークンを取得し、そのトークンを使用してfacebook APIを使用して、トークンの有効期限が切れるまで使用データを取得します。 Webサイトは、ユーザーが情報を直接公開し、資格情報をオンラインに広めることなく、プログラマーがデータにアクセスできるようにしますが、それでもデータをある程度保護します。事実上の認可の方法になりますか?おそらく、最近、Twitter、Facebook、および他のプログラマーがユーザーデータを中心にアプリケーションを構築したい同類のものから多くのサポートを得ています。

13
ameer

Oauthは間違いなく勢いを増しており、エンタープライズAPIでも人気を博しています。アプリとデータ駆動型の世界では、企業はGoogle、Facebook、Twitterに沿ってAPIを外部の世界にますます公開しています。この開発により、3方向の認証の三角形が形成されます

1)APIプロバイダー-Amazon、Targetなど、APIで資産を公開する企業2)開発者-このAPIを介してモバイル/その他のアプリを構築する企業3)エンドユーザー-提供するサービスのエンドユーザー- Amazonの登録済み/ゲストユーザーと言う

これで、セキュリティに関連する状況が発生します-(これらの複雑さのいくつかをリストしています)1)エンドユーザーとして、開発者があなたに代わってAPIにアクセスできるようにしたい。 2)APIプロバイダーは、開発者とエンドユーザーを認証する必要があります3)エンドユーザーは、与えられた同意に対する許可を付与および取り消すことができる必要があります4)開発者は、APIプロバイダーに対してさまざまなレベルの信頼を持ちます彼女に与えられる許可のレベルは異なります

Oauthは、上記の問題を標準的な方法で解決しようとする承認フレームワークです。 APIとアプリが目立つようになると、この問題はますます関連性が増し、それを解決しようとする標準-誓約であれ他であれ-は、APIプロバイダー/開発者、さらにはエンドユーザーとしても気になります!

9
randomness

OAuthOpenAuthorization)は、アクセス許可/デリゲーションプロトコルのオープンスタンダードです。インターネットユーザーがパスワードを与えずに、他のWebサイトの情報へのアクセスをWebサイトまたはアプリケーションに許可する方法として使用されました。 認証は扱いません。

または

OAuth 2.0は、資格情報を公開することなく、ユーザーが1つのサイトのリソースへの制限されたアクセスを別のサイトに許可できるプロトコルです。

  • アナロジー1:今日、多くの高級車にはバレットキーが付いています。これは、駐車係員に渡す特別なキーであり、通常のキーとは異なり、車が1マイルまたは2マイル以上運転することはできません。一部のバレーキーはトランクを開けませんが、他のキーはオンボード携帯電話のアドレス帳へのアクセスをブロックします。 valetキーが課す制限に関係なく、このアイデアは非常に巧妙です。通常のキーを使用してすべてのロックを解除しながら、誰かに特別なキーであなたの車へのアクセスを制限します。 auth0からのsrc

  • Analogy 2:銀行口座の申請書に記入したいとします。ここで、Oauthは、申請者がフォームに記入する代わりに、Adhaarまたはパスポートを使用してフォームに記入できるように機能します。

    ここでは、次の3つのエンティティが関係しています。

    1. 申請者、すなわち所有者
    2. 銀行口座はOAuthクライアントです。情報が必要です
    3. Adhaar/Passport IDはOAuth Providerです
8
Premraj

OAuthとは、承認を委任することです(承認を行うことができる人を選択する)。認証と承認は異なることに注意してください。 OAuthは承認(アクセス制御)であり、認証(ID検証)も実装する場合は、OAuthの上でOpenIDプロトコルを使用できます。

Facebook、Google、Githubなどの大企業はすべて、最近この種の認証/承認を使用しています。たとえば、Googleアカウントを使用してこのWebサイトにサインインしたばかりです。これは、Stackoverflowがパスワードを知らないことを意味します。これには多くの利点がありますが、そのうちの1つは次のとおりです。近い将来、すべてのWebサイトで複数のアカウントを作成する必要はなくなります。 1つのWebサイト(最も信頼できる)を使用して、他のすべてのWebサイトにログインできます。したがって、覚える必要があるのは1つのパスワードだけです。

5
Ozkan

OAuthは、Facebook/GoogleボタンでSOアカウントにサインアップしたときに発生しました。

  1. ユーザーをプロバイダーの認証URLにリダイレクトするアプリケーション(SO)。 (ユーザーにデータの読み取りと更新のためのアプリケーションアクセスを許可するかどうかを尋ねるWebページを表示します)。
  2. ユーザーは、申請プロセスを許可することに同意します。
  3. サービスプロバイダーはユーザーをアプリケーション(SO)にリダイレクトし、パラメーターとして認証コードを渡します。
  4. SOはコードをアクセス許可と交換します。

ソース: OAuth1サービスプロバイダー

2
John Joe

OAuthは、インターネットユーザーがパスワードを公開せずにMicrosoft、Google、Facebook、またはTwitterアカウントを使用してサードパーティのWebサイトにログインする方法として一般的に使用される認証のオープンスタンダードです。

OAuthは、リソース所有者(facebook、google、Tweeter、Microsoft liveなど)から使用されるプロトコルであり、必要な情報を提供したり、サードパーティシステム(サイトなど)への書き込み成功の許可を提供したりします。ほとんどの場合、OAuthプロトコルを使用しないと、サードパーティシステムで資格情報を使用できるようになりますが、これらのシステム間の通信方法は不適切です。