PKCE 【Proof Key for Code Exchange】

概要

PKCE(Proof Key for Code Exchange)とは、OAuth 2.0の拡張仕様で、認可コード横取り攻撃を防止する仕組みを定義したもの。スマートフォンなどで悪意あるアプリ認可コードを不正に取得するのを防ぐ。IETFによってRFC 7636として標準化されている。

OAuthネットワーク上のサービス間で横断的に権限の認可authorization)をうための手順やデータ形式を定めた標準規格の一つで、利用者認可サーバ認可コードを要求し、サーバ認可コードを発行するという手順が含まれる。

スマートフォンなどでは同じURIスキームを処理するアプリを複数登録することができるものがあるため、Webブラウザなどから発行を要求した認可コードを悪意のあるアプリが受領してしまい、利用者になりすましてアクセス権限を行使する「認可コード横取り」攻撃が可能となってしまう。

PKCEの仕組み

PKCEではこれを防ぐため、利用者が操作するアプリ認可コードを要求する際に「client_verify」という毎回異なるランダムなと、そのハッシュ値である「client_challenge」を生成する。認可サーバ認可コードを要求する際には client_challenge を通知する。

認可コード受領後、アクセストークンの発行を依頼する際には認可サーバに client_verify を通知する。サーバ側では client_verify からハッシュ値を生成し、先に受け取っていた client_challenge に一致すれば、認可コードを持っているのが同じ相手であると確認できる。

端末に悪意のあるアプリがいたとしても最初に利用者認可コード請求のやり取りを盗み見ることはできないため、正しい client_verify のは分からない。認可コードを横取りしたとしても認可サーバに偽物であることが露見してしまい、アクセストークン発行など権限の行使は拒否される。

(2024.8.31更新)
この記事の著者 : (株)インセプト IT用語辞典 e-Words 編集部
1997年8月より「IT用語辞典 e-Words」を執筆・編集しています。累計公開記事数は1万ページ以上、累計サイト訪問者数は1億人以上です。学術論文や官公庁の資料などへも多数の記事が引用・参照されています。
ホーム画面への追加方法
1.ブラウザの 共有ボタンのアイコン 共有ボタンをタップ
2.メニューの「ホーム画面に追加」をタップ
閉じる