PKCEフローとは?
ぴーけーしーいーふろー
PKCEフローとは、OAuth 2.0の認可コードフローを安全に拡張し、コード横取り攻撃を防ぐための仕組みです。
PKCE(Proof Key for Code Exchange、ピクシーと読む)フローは、RFC 7636で定義されたOAuth 2.0の拡張仕様です。もともとネイティブアプリ(モバイルアプリなど)向けに設計されましたが、現在はSPA(シングルページアプリ)を含むすべてのパブリッククライアントに推奨されています。
通常の認可コードフローでは、認可サーバーが返す認可コードを第三者に傍受された場合、アクセストークンを不正取得されるリスクがあります。PKCEはこれを防ぐために以下の仕組みを追加します。
- クライアントがランダムな文字列(code_verifier)を生成する
- そのハッシュ値(code_challenge)を認可リクエストに含めて送る
- トークン取得時に元の code_verifier を送る
- 認可サーバーがハッシュを再計算して一致を確認する
認可コードが傍受されても、攻撃者は元の code_verifier を知らないためトークンを取得できません。クライアントシークレットを安全に保管できないパブリッククライアントでも、この仕組みによって強固なセキュリティが実現できます。
現在の多くの認証ライブラリやIDaaSサービスはPKCEを標準でサポートしており、新規実装では必須と考えるべき仕様です。
使い方・例文
スマートフォンアプリがSNSサービスのOAuth認証を行う際、PKCEフローを使うことで、OSのカスタムURLスキームを通じた認可コードの傍受攻撃を防ぎ、安全にアクセストークンを取得できます。
この用語をシェア
最終更新: