⭐️PKCE

Proof Key for Code Exchange(RFC 7636)。認可コードを盗まれても、トークンに交換させない。

  • code_verifier: クライアントが毎回作る乱数。手元に隠しておく(例: dBjftJeZ4CVP-...)
  • code_challenge: verifier の SHA-256。見られてもよい(例: E9Melhoa2Owv...)
手順 2: challenge を送る    → 認可サーバーが認可コードとセットで覚える
手順 5: verifier を送る     → 認可サーバーがハッシュして challenge と一致すれば発行

認可コードはブラウザを通るので盗まれうる。verifier はブラウザを通らないので盗めず、challenge からも逆算できない。だから盗んだ認可コードは使えない。