PKCE
Proof Key for Code Exchangeの略。「ピクシー」と読む。
Public Client向けにAuthorization Code Grantを使うためのOAuthの拡張仕様。
認可コード横取り攻撃を防ぐ。
次の3つの追加パラメタを使う。
table:追加パラメタ
code_verifier ランダムな文字列。
code_challenge code_verifier の値に対して code_challenge_method の計算をして得られた値。
code_challenge_method code_challenge の計算方法。 plain, S256 のどちらかの値を取る。
手順
1. Clientはあらかじめ code_verifier を生成し、code_challenge を計算しておく。
2. ClientはAuthorization Endpointに code_challenge と code_challenge_method を送る。
3. Authorization ServerはAuthorization Codeと code_challenge と code_challenge_method を紐づけて保存し、Redirect Endpointに処理を戻す。
4. ClientはAuthorization Codeと code_verifier をToken Endpointに送る。
5. Authorization Serverはcode_verifierから計算される値がcode_challengeと一致するか検証する。
コードが悪意あるClientに横取りされていた場合でも、最初に生成したcode_verifierをこいつは知らないはず。
というわけで横取り攻撃を防げる。
#TODO
[https://gyazo.com/c48512f8701bdf9cb2d9851a909ec2aa
[https://gyazo.com/85ae21d05b9c7ac5afa4efc44eb6bdea