使い方
「生成」で code_verifier・state・nonce をまとめて作ります。自分で貼り付けた code_verifier は、長さ(43〜128 文字)と使える文字を検査します。
code_challenge は S256(code_verifier の SHA-256 を base64url にした値)で表示されます。plain は使わないでください。
認可エンドポイント・client_id・redirect_uri・scope を入れると、認可リクエストの URL ができます。このツールは開かないので、コピーして自分でブラウザに貼ります。
認可サーバーから戻った URL(または「?」以降の文字列)を貼ると、code・state・error を取り出し、state が作ったときの値と一致するかを示します。
一致を確かめたら、トークンエンドポイントを入れて curl のコマンドを表示します。通信はしないので、コマンドは自分の端末で実行してください。
できること
code_verifier の生成と検査
crypto.getRandomValues で 43〜128 文字の値を作ります。貼り付けた値は長さと使える文字(英数字と - . _ ~)を確かめ、使えない文字は位置ではなく文字コード(U+)で示します。
S256 の code_challenge
code_verifier の SHA-256 を base64url(パディングなし)で計算します。RFC 7636 付録 B の例と一致することを単体テストで確かめています。
認可リクエストの URL
response_type・client_id・redirect_uri・scope・state・nonce(OIDC のとき)・code_challenge を組み立てます。空白は %20 で書きます。URL を開いたり送ったりはしません。
コールバックの読み取りと state の照合
戻った URL から code・state・error・error_description・iss を取り出します。state が作ったときの値と違えば、CSRF の可能性として警告します。
エラー応答の説明
RFC 6749 §4.1.2.1 のエラーコード(access_denied など)を、意味と次の行動つきで示します。
秘密は既定で伏せる
code_verifier・code・curl の出力は伏せて表示し、ページを閉じると消えます。保存(localStorage など)はしません。
こんなときに
- SPA やモバイルアプリの認可コードフローで、PKCE の値(verifier・challenge)を手で確かめたい
- code_challenge が合わない原因を、長さ・使える文字・S256 の順に調べたい
- 認可 URL の各パラメータが正しくエンコードされているかを見たい
- 戻ってきた URL の state が一致するか、エラーの内容が何かを読みたい
対応状況
| 機能 | 対応 | 補足 |
|---|---|---|
| code_verifier の生成(43〜128 文字・暗号学的乱数) | 対応 | — |
| code_verifier の検査(長さ・使える文字) | 対応 | — |
| code_challenge(S256)の計算 | 対応 | — |
| code_challenge_method=plain の計算 | 一部対応 | 計算はできますが、使わないよう勧めます(RFC 7636 §4.2) |
| 認可リクエストの URL の組み立て | 対応 | 文字列を作るだけ。開いたり送ったりしません |
| OpenID Connect の nonce の付与 | 対応 | — |
| コールバック URL の読み取りと state の照合 | 対応 | — |
| 認可サーバーの設定の取得(discovery) | 非対応 | 通信しません。エンドポイントは自分で入力します |
| トークンの取得(交換の実行) | 非対応 | 通信しません。curl のコマンドを表示するだけです |
| client_secret の入力 | 非対応 | PKCE は公開クライアント向けです。client_secret は扱いません |
| ID トークン・JWT の署名検証、iss の照合 | 非対応 | iss は表示するだけで、正しいかは確かめません |
| PAR・JAR・DPoP などの拡張 | 非対応 | これらの仕様は扱いません |
制限・注意事項
- code_verifier は 43〜128 文字です(RFC 7636 §4.1)。この範囲の外の値は、計算も生成もしません。
- 認可エンドポイントと redirect_uri は、2,048 文字までの https の URL です(開発用の localhost は http も可)。# を含む URL は使えません(RFC 6749 §3.1)。
- コールバックの貼り付けは 20,000 文字までです。
- SHA-256 の計算(WebCrypto)は、https か localhost のページでだけ動きます。
- クライアント側の確認です。認可サーバーが要求をどう照合し、トークンを発行するかは、このツールでは確かめられません。
プライバシーと安全性
code_verifier・state・コールバック URL・認可 URL は、お使いのブラウザの中だけで処理し、サーバーへ送信・保存されることはありません。code_verifier・code・curl の出力は既定で伏せ、ページを閉じると内容は消えます。
よくある質問
code_verifier と code_challenge の関係は何ですか?
S256 と plain のどちらを使えばよいですか?
state は何のためで、一致しないとどうなりますか?
client_secret を入れなくてよいのはなぜですか?
このツールでトークンを取得できますか?
nonce はいつ必要ですか?
関連ツール
暗号・ハッシュ計算(Crypto Studio)
テキストを入れるだけで SHA-256 や SHA-3 など 12 種類のハッシュ値を一度に表示。Webhook 署名の HMAC 照合、パスワードでのテキスト暗号化、鍵ペアの生成、bcrypt の作成と照合まで、送信なしで手元の端末だけで行えます。
エンコード・デコード(Encode / Decode Studio)
文字化けした %E3%81%82 や eyJ… のトークンを貼るだけで形式を自動判別して元に戻します。エラーは「何文字目の何が不正か」まで表示し、処理はすべてブラウザ内で完結します。
Cookie / Set-Cookie Studio
Cookie ヘッダーや Set-Cookie を貼り付けると、属性(Expires・Max-Age・Domain・Path・Secure・HttpOnly・SameSite・Partitioned)を表にし、確認したい点を示します。フォームから Set-Cookie ヘッダーと各言語の書き方も作れます。
JWK / JWKS Studio(JWK・JWKS 確認)
JWK か JWKS を貼ると、鍵ごとの種類・kid・鍵長・thumbprint を表にして、RFC 7517 と 7518 に照らした問題点を理由つきで示します。公開鍵の PEM 変換もできます。署名の検証や鍵の生成は行いません。
テキスト・コード Diff
変更前と変更後を貼り付けるかファイルをドロップするだけで、追加・削除された行と、行の中で変わった単語まで色分けして表示します。結果は unified 形式のパッチとしてコピー・保存でき、入力はブラウザの外へ出ません。
UUID / ULID / NanoID / トークン生成
ページを開いた瞬間に UUID が 1 件生成済み。種類を選ぶだけで UUID v7・ULID・NanoID・ランダムトークンに切り替わり、最大 1 万件を .txt / .csv / .json で保存できます。既存の UUID や ULID を貼り付ければ、埋め込まれた時刻やバージョンも読み取れます。
最終更新: