PKCE

Proof Key for Code Exchange。OAuth2の認可コードフローを強化し、認可コード傍受攻撃を防ぐセキュリティ拡張(RFC 7636)。

仕組み

通常のOAuth認可コードフローでは、攻撃者が認可コードを傍受するとアクセストークンを不正取得できる。PKCEはこれを防ぐ。

1. クライアントがランダムな code_verifier を生成
2. code_verifier のハッシュ(code_challenge)を認可リクエストに含める
3. 認可サーバーが認可コードを発行
4. トークン交換時に元の code_verifier を送信
5. サーバーがハッシュを検証し、一致すればトークン発行

攻撃者が認可コードを傍受しても、code_verifierを知らなければトークンを取得できない。

技術要件

なぜ必要か

元々はモバイルアプリなど、client_secretを安全に保持できないパブリッククライアント向けの仕様だった。OAuth 2.1ではすべてのクライアントにPKCE使用が必須となり、MCPのHTTPベースサーバーでも必須要件とされている。

関連