2013-12-20 63 views
14

OmniauthとOAuth2について、またOmniauthがOAuthをどのように使用しているかをよく読んだことがありますが、それぞれの目的が本当にわかりません。私はOmniauthせずに、OAuthのを使用している場合OAuth2とOmniauthとの違い

は例えば、私はOmniauthで、私は戻って

@auth [ 'omniauth.params']

でのparamsを送っ得ることができることを知っているが、 、私は同じことをすることはできますか?

私の本当の問題は、Omniauthが終了しOAuthが始まるそれらの違いを理解していないことと、OAuthでは不可能なOmniauthとは何ができるかということです。

+2

フラン、あなたがこの質問を書いたやり方で、私はあなたがRailsを使っていると思います。本当? – pjmorse

+0

はい、それはレールアプリケーションでした。遅い応答は決してありません:D –

答えて

19

この回答では、Rails(またはその他のRackベースのフレームワーク)を使用していると仮定しています.Onniauthはそれがないと意味をなさないためです。

OAuth2で開始してください。 OAuthは、別のサイトでの認証を使用して1つのサイトのユーザーに権限を与えるためのシステムです。 OAuth自体は、これが管理されるシステムを記述しますが、サイトがそれを実行するために使用するコードは指定しません。 (これは、例えば、PHPベースのサイトがRubyベースのサイトをプロバイダとして使用する可能性があり、プロバイダの舞台裏で何が起こっているのかを知る必要はない)。ラックベースのサイトで分散認証をサポートするためのパッケージです。 OAuth2はであり、これを処理するためにサポートするプロトコルはであり、OAuth2仕様のRuby実装であるOAuth2という名前のクラスが組み込まれています。 OmniauthはOAuth2を包むラッパーとして考えることができます.OAuth2は、プロトコルの詳細を扱いすぎることなく、プロトコルの詳細を処理します。

は、Omniauthを使用せずにOAuth2 gem/classを使用し、OAuth2での認証の詳細を処理しますが、その理由はわかりません。

OAuthでは不可能なことは、他の非OAuthサービスで認証されていることです(Omniauthは、Stack Exchangeなどの認証にコミュニティで構築された「戦略」を使用できます) )。

+3

これは実際には正しくありません。 OAuthは「サイト間で認証を共有するためのプロトコル」ではなく、「2つのサイトがユーザーを認証する一連の手順」を記述するものではありません。これは、主に、「リソース所有者」が第三者アプリケーションに代わってリソースにアクセスすることを許可することに関するものです。リソースは、リソース所有者が誰であるかについての情報を提供するアカウントですが、アプリケーションが実際にそれらについて何も知らないかもしれません。 –

+1

清算していただきありがとうございます。私はいくつかの編集をしました - "プロトコル"は合理的な言葉ですか? – pjmorse

+0

はい、私は間違いなくそう言います。 [OAuth2仕様](http://tools.ietf.org/html/rfc6749#section-1.2)もそれを使用しています。それは単に認証プロトコルではありません。 [OpenID Connect](http://openid.net/connect/)はOAuth2上に構築されており、認証とID関連の機能を提供しています。 –

関連する問題