PKCE
Proof Key for Code Exchange
ピクシー
OAuth 2.0で、コードインジェクション攻撃を防ぐための仕組み
特にネイティブアプリやSPAで、Authrization Codeを盗まれる攻撃が発生しやすい
client secret無しでOAuthが使えるようになる
クライアントサイドではcode_veriferと、それをハッシュ化したcode_challengeを生成
認可コードをリクエストする際にcode_challenge(と、code_challenge_method)もパラメータに含めて送る
認可コードを使ってアクセストークンをリクエストする際に、code_veriferも送る
サーバー側はcode_veriferをハッシュ化してcode_challengeと一致するか検証し、一致すればアクセストークンを発行する
これにより認可コードを盗まれてもアクセストークンは発行できない
そして、アクセストークン盗難に対処する仕組みがDPoP(PoP)