OAuthの実装と検証

PKCE生成既存の値から一致を確認

コードベリファイアからS256を計算し、必要な場合だけ比較します。

PKCE生成

コードベリファイア

43〜128文字のASCII文字を使用します:A〜Z、a〜z、0〜9、-、.、_、~。空白や改行は削除しません。

比較するコードチャレンジ(任意)

比較しない場合は完全に空にしてください。入力する場合は=のない正規Base64URLで43文字が必要です。

S256の結果

構文が正しくても、入力した値がランダムで予測困難とは限りません。

入力はこのページ内で処理され、ツールから送信・保存されません。

オプション

次の手動生成にのみ適用します。乱数をパディングなしのBase64URLに変換します。SHA-256の出力は常に256ビットです。

値を貼り付けるか、生成する値をプレビューしてください。

認可リクエストとトークン交換で別の値を使うと、PKCEの検証は通りません。PKCE生成では既存のコードベリファイアをそのまま入力して、送信したコードチャレンジを再現できます。新しいペアは明示的に生成します。

S256はベリファイアのASCIIバイト列をSHA-256で処理し、そのバイナリ結果をbase64urlに変換します。画面上の一致はこの計算の確認であり、ログインやプロバイダー設定の成功を保証するものではありません。

PKCE生成で確認できること

進行中の処理を再現する

失敗した処理を調べるには、新しいペアよりも元の値が必要です。PKCE生成は貼り付けたベリファイアを勝手に作り直さず、対応するチャレンジを計算します。

ランダムなバイトからベリファイアができ、ハッシュ処理で一定の長さのチャレンジになります。

不正な入力と不一致を分ける

余分な改行、長さの違い、正規でない末尾文字を先に確認します。形式が正しい別のチャレンジは、不一致として報告されるため、調べる対象を絞れます。

同じベリファイアを2つのチャレンジと比較し、一致と不一致を示しています。

同じ処理の値をそろえる

01

元の値を使うか決める

初期状態では何も生成しません。既存の値を入力するか、乱数の生成を選択します。標準の32バイトは43文字になり、サイズを変えるだけでは入力は更新されません。

  • 新しい認可リクエストでは、新しい予測困難な値を生成します。
02

送信したチャレンジを比較する

比較欄を空にすると計算だけを実行します。自動計算は編集の350ms後です。オフにすると計算ボタンかCtrl/Cmd+Enterで実行できます。

  • 空白だけの比較欄は空欄として扱わず、入力エラーになります。
03

適用してから結果を保存する

生成、RFCの例、クリアはすべて置換プレビューを表示します。適用後は取り消しで以前の入力と結果を復元できます。最新の結果を確認してコピーまたはJSON保存を行います。

  • 入力を変更すると古い結果のエクスポートは無効になります。

生成と検証を一つの画面で

暗号学的乱数

32、48、64、96バイトから選び、43、64、86、128文字のベリファイアを生成します。ブラウザーの安全な乱数源を使用します。

S256の計算

ベリファイアをASCIIとしてSHA-256で処理し、32バイトの結果をパディングなしで符号化します。チャレンジは常に43文字です。

既存ペアの検証

比較しない、一致、不一致を別々に表示します。期待したチャレンジを入力すれば、現在のベリファイアとの関係を確認できます。

情報を残せるJSON

2つの値、方式、長さ、構文の判定、比較対象、比較結果、乱数源の情報をまとめてコピーまたは保存できます。

結果を読むときの注意

入力を自動修正しない
ベリファイアは43〜128文字のASCII非予約文字に限ります。引用符、空白、改行、Unicode、=を除去して受け入れることはありません。
正規のBase64URL
比較対象は43文字で、末尾の2つのパディングビットがゼロである必要があります。同じバイト列に復号できても、正規でない表記は拒否します。
方式はS256のみ
plainへの切り替え、ハッシュの逆算、ログイン、トークン交換、プロバイダーへの問い合わせは行いません。
構文とエントロピーは別
生成元は256、384、512、768ビットの乱数です。SHA-256の出力は256ビットのままで、安全強度を示す数値ではありません。手入力のランダム性は判定できません。
公開サンプルを使い回さない
RFCの例は誰でも知っている値です。計算確認にだけ使い、実際の認可には新しいランダムなベリファイアを用意してください。

PKCE生成のよくある質問

ベリファイアとチャレンジはどう関係していますか?

S256ではベリファイアのASCIIバイト列をSHA-256でハッシュし、バイナリの結果をBase64URLに変換します。16進文字列を符号化したものではなく、末尾の=も付きません。

計算結果はどう確認できますか?

PKCE生成のRFC例で公開テストベクトルを読み込み、一致することを確認できます。自分のデータでは、実際に送ったチャレンジを比較欄に貼り付けてください。

ベリファイアは何文字必要ですか?

RFC 7636の構文では43〜128文字です。このツールの32バイト生成は43文字になります。ただし、43文字あれば必ず安全なのではなく、予測できない生成方法が必要です。

S256とplainの違いは何ですか?

S256はハッシュからチャレンジを作り、plainはベリファイア自体を使います。このページはS256専用で、plainへの自動切り替えは行いません。

base64urlはbase64とどう違いますか?

通常のBase64の+と/を、それぞれ-と_に置き換える形式です。PKCEでは末尾の=も付けません。比較するS256値は正規表記の43文字である必要があります。

計算や入力判定に問題がありましたか?

手元の値を確認する

PKCE生成に元のベリファイアを入力し、比較結果を確認してから必要な値をコピーしてください。