[解決済み] OAuthの認可と認証
質問
OAuth の用語に長い間悩まされています。 OAuth は、ある人が言うように Authorization なのでしょうか、それとも Authentication なのでしょうか?
もし私が間違っているならば訂正してください。しかし、私はいつも認証とは誰かがリソースにアクセスすることを許可する行為であると読んでいました。 OAuth の実装で語られるのは、ユーザーにトークン(署名済み、場合によっては暗号化済み)を提供することだけです。 このトークンは、バックエンド サービスのエンドポイントへのすべての呼び出しで渡され、そこで有効性がチェックされますが、これも OAuth の問題ではありません。
OAuth認証は(どの記事もそうではないと書いてありますが)、ユーザーが認証情報を提供する必要があり、それによってユーザーがアクセスするべきかどうかが証明されると思うのですが?
ということは、OAuth は認可でも認証でもないようです。 では、一体何なのでしょうか? トークンを伝達するためのプロセスなのでしょうか? 特に意味のないふわっとした言葉なのでしょうか?
このテーマについて、謎めいた迷信(幽霊や妖怪)に聞こえることなく質問するのは難しいので、この質問に答えることも簡単なことではないと予想されます。 自己責任でお願いします。
どのように解決するのですか?
OAuthは認可のための仕様です
OAuth 2.0 は認可のための仕様であり、認証のための仕様ではありません。RFC 6749に記載されています。 3.1. 認可エンドポイント には、以下のように明示されています。
認可エンドポイントは、リソース所有者と対話するために使用されます。 と対話し、認可の許可を得るために使用されます。認可サーバーは、まず、リソース所有者の身元を確認しなければなりません (MUST)。 は、リソース所有者の身元を確認しなければなりません。認可サーバーがリソース所有者を認証する方法 認可サーバーがリソース所有者を認証する方法 (例: ユーザー名とパスワードによるログイン、セッションクッキー) は、リソース所有者の身元を確認する必要があります。 とパスワードのログイン、セッションクッキー) は の範囲外である。 仕様の範囲外です。 .
OAuth認証は?
認証は、「誰が誰であるか」という情報を扱います。認可は、「誰が誰にどのような権限を与えるか」という情報を扱います。認可フローは、その最初のステップとして認証を含んでいます。これが、人々がしばしば混乱する理由です。
OAuth 2.0を認証に使っているライブラリやサービスはたくさんあります。これはしばしばソーシャルログインと呼ばれ、人々をより混乱させます。もし、OAuth認証と書かれていたら、それはOAuthを使った認証ソリューションです。
OpenIDコネクト
OpenID 1.0とOpenID 2.0は、認証のための古い仕様です。この仕様を作った人たちは、人々が認証のためにOpenIDを使うことを期待していました。しかし、OAuth 2.0を認証に使う人が出てきて、OAuth認証が急速に普及しました(認証には使えません)。
OpenID関係者からすると、OAuthによる認証は安全性に欠けるのですが、OAuth認証の方が好まれることを認めざるを得ませんでした。その結果、OpenID関係者は新しい仕様を定義することにしました。 OpenIDコネクト OAuth 2.0の上に乗っています。
はい、これによって人々はより混乱するようになりました。
OAuth 2.0 と OpenID Connect の一文による定義
OAuth 2.0 は、あるサービスのユーザが、サードパーティのアプリケーションに自分の認証情報(ID&パスワード)を明かすことなく、そのサービスでホストされている自分のデータにアクセスすることを許可するためのフレームワークです。
OpenIDコネクト は、OAuth 2.0の上に構築されたフレームワークで、サードパーティのアプリケーションは、サービスによって管理されているユーザのID情報を取得することができます。
(申し訳ありませんが、これらの定義は 概要 のページからの抜粋です)
実装者の視点からの定義
認証 は、エンドユーザのサブジェクト(=一意な識別子)を決定するためのプロセスです。主体を決定する方法はたくさんあります。パスワード、指紋、虹彩認証など。
認証方法 は、要求された権限を持つ被験者と、権限を要求したクライアントアプリケーションを関連付けるための処理です。アクセストークンはその関連付けを表します。
参照
関連
-
[解決済み] OAuth 2.0のBearer Tokenとは具体的に何ですか?
-
[解決済み] OpenIDとOAuthの違いは何ですか?
-
[解決済み] JWT認証とOAuth認証の主な違いは何ですか?
-
[解決済み] Google OAuth 2 認証 - エラー: redirect_uri_mismatch
-
[解決済み】OAuth2.メリットとユースケース - なぜ?
-
[解決済み】OAuth 2の暗黙のグラント承認タイプの目的は何ですか?
-
[解決済み] SSOはCASかOAuthか?
-
[解決済み] OAuthでREST APIを保護しつつ、サードパーティのOAuthプロバイダによる認証を許可する(DotNetOpenAuthを使用する)
-
[解決済み] JWT (Json Web Token) Audience "aud" vs Client_Id - 違いは何ですか?
-
[解決済み] Google APIでユーザー情報を取得する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] OAuth 2.0のBearer Tokenとは具体的に何ですか?
-
[解決済み] JWTとBearer Tokenの違いは何ですか?
-
[解決済み] OpenIDとOAuthの違いは何ですか?
-
[解決済み】OAuth 2.0 Bearer Tokenとは、具体的にどのようなものですか?
-
[解決済み】アクセストークンが失効するのはなぜですか?
-
[解決済み】OAuth: ローカルのURLでテストする方法は?
-
[解決済み] OAuth Authorization CodeとImplicitワークフローの違いは何ですか?それぞれを使用するタイミングは?
-
[解決済み] リソースサーバーのOAuth 2.0アクセストークンを検証する方法とは?
-
[解決済み] OAuthでREST APIを保護しつつ、サードパーティのOAuthプロバイダによる認証を許可する(DotNetOpenAuthを使用する)
-
[解決済み] JWT (Json Web Token) Audience "aud" vs Client_Id - 違いは何ですか?