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


201

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

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

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

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

回答:


327

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

OAuthを使用すると、リソースプロバイダー(Facebookなど)に、リソース所有者(たとえば、あなた)がサードパーティ(Facebookアプリケーションなど)に情報へのアクセスを許可することを通知できます。(たとえば、友達のリストます。

分かりやすく読めば、あなたの混乱がわかります。それでは、具体的な例を見てみましょう:さらに別のソーシャルネットワークに参加します!

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

この状況に直面すると、LinkedInは友人のリストを自動的に追加するプログラムを作成するGood Idea(TM)を使用します。これは、コンピュータは、面倒でエラーが発生しやすいタスクではるかに効率的かつ効果的だからです。ネットワークに参加するのはとても簡単なので、方法はありません申し出を拒否するん。

この連絡先リストを交換するためのAPIがない場合、LinkedInにGMailアカウントのユーザー名とパスワードを提供する必要があり、その結果、LinkedInに非常に大きな権限与えることになります

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

OAuthでは次のことが可能です。

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

近い将来、デファクト(標準)になるのでしょうか?

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

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

私は他の多くの用途を実際に目にしたことはありません。つまり、銀行の記録に自動的にアクセスするオンラインの金融アドバイス会社は知りませんが、技術的にはそのように使用できます。


6
わかりやすくしました。代わりに、最初の行をこのようなものに変更した可能性があります。「OAuthを使用すると、リソースオーナー(Gmailなど)に、リソース所有者(Gmailユーザーなど)がサードパーティ(LinkedInアカウントなど)に情報(連絡先リストなど)へのアクセスを許可することを通知できます。」あなたが書いたもの、つまりプロバイダーであるサードパーティと「両方」がFacebookであるというのは混乱を招く。少し興味深いシナリオを紹介していますが、Oauthは社内のさまざまなプロジェクト間で使用することもできます。正しい?複雑なイントロを導入したのはそのためですか?
Honey

私の理解によると、OAuthの目的は、資格情報を共有せずにリソース所有者に代わってサードパーティアプリケーションに時間制限付きの承認を与えることです。アプリケーションサーバーでホストされているAPIをモバイルアプリケーションから使用するためにOAuthが必要かどうかを知りたいのですが(サードパーティは関与していません)。
モニシュカンブル19

信頼できる当事者が私を承認するとき、それは認証メカニズムでもあることを意味しませんか?
変数

245

oAuthとは何ですか?

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

関係者

関係者を知っていると、プロトコルはより簡単になります。基本的には、3つの当事者が関与します。oAuthプロバイダー、oAuthクライアント、および所有者です。

  • oAuthクライアント(資格情報へのアクセスを希望するアプリケーション)
  • oAuthプロバイダー(例:facebook、twitter ...)
  • オーナー(facebook、twitter ..アカウントを持つ人)

使い方?

Webサイト(stackoverflow)がFacebook機能でログインを追加する必要があるシナリオを想定しています。したがって、facebookはoAuthプロバイダーで、stackoverflowはoAuthクライアントです。

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

    2. 今のstackoverflowのユーザーがクリックはFBボタンを使ってログイン。StackoverflowはFacebookにClientId(fbを使用してクライアントを認識する)を要求し、redirectUrl(fbは成功後にこのURLに戻ります)。したがって、ユーザーはFacebookのログインページにリダイレクトされます。これは、ユーザー(所有者)がfacebookクレデンシャルをstackoverflowに与えていない最高の部分です。

ここに画像の説明を入力してください

ここに画像の説明を入力してください

  1. 所有者の後、Stackoverflowが情報にアクセスできるようにします。次にFacebook は、ステップ2で提供されたredirectUrlを使用して、authcodeとともに、stackoverflowにリダイレクトします。
  2. 次に、Stackoverflowは、取得した認証コードとともにFacebookと連絡を取り、問題がないことを確認します。
  3. そうして初めて、facebookがアクセストークンをstackoverflowに提供します。次に、アクセストークンをstackoverflowが使用して、パスワードを使用せずに所有者の情報を取得します。これが、oAuthの全体的な動機です。そこでは、実際の認証情報がサードパーティのアプリケーションに公開されることはありません。

多くのための:

クイックビデオ

ウェブリンク


localhostもURLであることを確認してください。期限切れにして、結果をここに投稿してください。
Balman Rawat 2017

2
そう、リダイレクトURLとしてIPアドレスを使用できます:redirect_uri = ' 127.0.0.1:4200 'そしてOAuthドメイン名は127.0.0.1で
Samson Maben

しかし、メールが機能するためには、oAuthクライアントとoAuthプロバイダーの両方で同じである必要がありますか?
Rowayda Khayri

いい説明
JayD、

OAuth 2は、認証プロトコルではなく、セキュリティプロトコルです。答えは間違ったメモから始まります。
ラジャット

13

簡単に言えば、OAuthは、アプリケーションがユーザーのログイン情報をWebサイトに直接取得せずに、情報への資格情報を取得する方法です。たとえば、自分のWebサイトでアプリケーションを作成し、それをユーザーのFacebookアカウントのデータを使用する場合、OAuthを使用してコールバックURL経由でトークンを取得し、そのトークンを使用してFacebook APIを呼び出してFacebook APIを取得できます。トークンの有効期限が切れるまでデータを使用します。ユーザーが直接情報を公開したり、資格情報をオンラインに広めたりせずにプログラマーがデータにアクセスできる一方で、データに一定レベルの保護を提供できるため、Webサイトはこれに依存しています。それは事実上の認可方法になるのでしょうか?たぶん、最近TwitterやFacebookから多くの支持を得ています。


14
OAuthは認証プロセスではなく、承認プロセスです。
アンドレ・キャノン

アプリケーションが直接認証を必要とすることを意味しているわけではありませんが、ユーザーはサービスプロバイダーで認証を行い、第三者がユーザーデータにアクセスすることを承認します...
ameer

OpenIDは委任された認証(既存の外部アカウントの再利用)を特に目的としているため、共有の資格情報の共有を停止することを期待して精度を追加しました。OAuthは、特に情報交換を促進するための承認(リソースの再利用)を目的としています。
アンドレ・キャノン

9

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

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

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

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


9

OAuthO pen Auth orization)は、アクセス許可/委任プロトコルのオープンスタンダードです。これは、インターネットユーザーがWebサイトまたはアプリケーションに他のWebサイト上の情報へのアクセスを許可する方法として使用しましたが、パスワードは提供しませんでした。認証は扱いません

または

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

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

  • 類推2:銀行口座の申し込みフォームに記入するとします。ここでOauthは、申請者がフォームに入力する代わりに、Adhaarまたはパスポートを使用してフォームに入力することができます。

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

    1. 申請者、すなわち所有者
    2. 銀行口座はOAuthクライアントであり、情報が必要です
    3. Adhaar / Passport IDはOAuthプロバイダーです

7

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

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


2

OAuth Facebook / GoogleボタンでSOアカウントにサインアップしたときに起こりました。

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

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


こんにちは、REST APIを使用する必要があるため、oAuthをインストールします。実際にはMagentoを使用しています。ローカルホストでは、oAuthをインストールしています。ライブサーバーにインストールするには、GoDaddy VPSサーバーを使用しています。@john joe
Gem

@Rathinamこんにちは、IIがお手伝いしたいと思いますが、それは私の専門知識の範囲外です。すみません。
ジョンジョー

oAuthなしでREST APIを使用できますか?@John Joe
Gem

@Rathinamはい、それはあなた次第
ジョン・ジョー

1

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


2
OAuthとOpenIDを間違えたようです
A23149577

0

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.