1. ホーム
  2. oauth

[解決済み] OAuthの認可と認証

2022-12-21 22:49:06

質問

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情報を取得することができます。

(申し訳ありませんが、これらの定義は 概要 のページからの抜粋です)



実装者の視点からの定義

認証 は、エンドユーザのサブジェクト(=一意な識別子)を決定するためのプロセスです。主体を決定する方法はたくさんあります。パスワード、指紋、虹彩認証など。

認証方法 は、要求された権限を持つ被験者と、権限を要求したクライアントアプリケーションを関連付けるための処理です。アクセストークンはその関連付けを表します。



参照

  1. OAuth と OpenID Connect のフルスクラッチ実装者が発見したことを語る
  2. OAuth 2.0 の全フローのダイアグラムとムービー
  3. OpenID Connectの全フローの図解
  4. OAuth 2.0 の最も簡単なガイド