使い方
- 生成ボタンで新しい code_verifier を作るか、貼り付けます。
- code_challenge は BASE64URL(SHA-256(code_verifier)) で計算されます。
- 認可リクエストに code_challenge と code_challenge_method=S256 を付けます。
- トークンリクエストに code_verifier を付けます。
PKCE(RFC 7636)は OAuth 2.0 の認可コードフローを守る仕組みで、クライアントシークレットを保持できないモバイルアプリや SPA 向けに作られました。クライアントは使い捨ての秘密値 code_verifier を作り、そのハッシュ code_challenge だけを認可リクエストに付けます。トークン取得時に元の verifier を送るとサーバーが照合するので、コードだけを盗んでも使えません。
verifier は crypto.getRandomValues の 32 バイト乱数をパディングなし base64url にした 43 文字、code_challenge はその SHA-256 を同じ方式で変換した 43 文字です。RFC 7636 には plain もありますが、SHA-256 を計算できるなら S256 を使うと定められているので S256 のみ対応します。ログイン連携のデバッグに使えます。
貼り付けた verifier は形式を確認せずにハッシュします。A-Z、a-z、0-9、-、.、_、~ からなる 43〜128 文字か確認してください。verifier は毎回作り直します。どちらの値もブラウザ内で計算され、送信されません。