title: “PKCE” aliases:


PKCEは、OAuth 2.0の認可コードフローで認可コードの横取り・注入を防ぐ拡張機構である。

仕組み

クライアントは認可開始時にランダムなcode_verifierを生成し、そこから導出したcode_challengeを認可リクエストへ送る。認可コードをトークンへ交換するときに元のcode_verifierを提示し、認可サーバーが照合する。これにより、フローを開始したクライアントだけがコード交換を完了できる。

利用上の位置付け

PKCEはクライアント認証ではなく、クライアントシークレットの代替でもない。既存のクライアント認証と併用し、認可コードフローごとに使うことが推奨される。モバイル・ネイティブアプリ向けに設計されたが、機密クライアントを含むすべてのクライアントに有用である。

WikiDigでの利用

WikiDigの保守レイヤーでは、GitHub認可にPKCEを用いる。認可コードを取得しただけの第三者がアクセストークンへ交換するリスクを低減する。

Sources