OIDC メタデータを確認して PKCE 値を生成

本番のシークレットやトークンではなく、プロバイダーのメタデータを貼り付けてください。宣言内容のみを確認し、プロバイダーへの接続やクライアント登録・リダイレクト許可リストの確認は行いません。

ブラウザ内でローカルに実行
このページは ID プロバイダーに接続しません。本番のクライアントシークレット、認可コード、アクセストークンは貼り付けず、メタデータのみを貼り付けてください。
クライアントコンテキスト 任意の値を入力すると、ローカルでの確認をより具体的にできます。
OpenID Connect ディスカバリーメタデータ
PKCE 値 このブラウザの Web Crypto で生成されました。
コードベリファイア
PKCE セットを生成すると、ローカルの値が表示されます。
S256 コードチャレンジ
PKCE セットを生成すると、ローカルの値が表示されます。
ステート (state)
PKCE セットを生成すると、ローカルの値が表示されます。
検査サマリー
  • 確認するには OpenID Connect ディスカバリーの JSON を貼り付けてください。

より安全なパブリッククライアントのログインフローを準備する

ブラウザおよびモバイルクライアントでは、PKCE 付きの Authorization Code を使用してください。このローカルチェッカーでは、プロバイダーへの登録、リダイレクト URI 許可リスト、同意ポリシー、実際のトークンの動作を確認することはできません。

OIDC ディスカバリーのメタデータを確認して PKCE 値を生成する手順

/.well-known/openid-configuration が返す JSON を貼り付け、「OIDC 設定を確認」を押すと検査結果が表示されます。公開クライアント(Authorization Code)が必要とする項目を挙げ、統合前に直すべき問題と確認したい項目を分けて示します。クライアント ID とリダイレクト URI は任意で、入力するとローカル検査がより具体的になります。

PKCE のボタンは 48 バイトの乱数を取得して SHA-256 で要約し、コードベリファイア、S256 チャレンジ、state 値を表示します。処理はすべてこのタブ内の Web Crypto で行われ、貼り付けたメタデータは KivTools にも ID プロバイダーにも送信されません。

  1. プロバイダーのディスカバリー文書(例:https://login.example.com/.well-known/openid-configuration)の JSON をコピーし、メタデータ欄に貼り付けます。先に想定形式を見たい場合は「サンプルを読み込む」を押します。
  2. 登録済みのクライアント ID とリダイレクト URI がある場合は入力します。どちらも任意で、空でもプロバイダー文書の検査は行われます。
  3. 「OIDC 設定を確認」を押します。必須項目と URL が先に並び、続いて response type、grant type、PKCE 方式、JWKS URI が表示され、各指摘には根拠となった項目のパスが付きます。
  4. 統合前に致命的な指摘を解消します。エンドポイントの欠落、plain のみの PKCE 宣言、本番での http リダイレクトはフローを壊します。要確認の項目は読む価値はありますが、テスト環境を止めるものではありません。
  5. 「PKCE セットを生成」を押し、「PKCE 値をコピー」で値を取り出します。ベリファイアはトークン要求までクライアント内に保持し、次のプロバイダーを貼る前に「クリア」を押します。

ディスカバリー文書が宣言する内容と PKCE 値の内訳

ディスカバリー文書が宣言すべき項目

検査対象はブラウザーやモバイルクライアントが依存する項目です。issuer、authorization_endpoint、token_endpoint は絶対 URL である必要があり、本番は HTTPS、HTTP はループバックアドレスのみ許容します。トークン署名の検証には jwks_uri の宣言が必要です。Authorization Code フローには response_types_supported の code と grant_types_supported の authorization_code が含まれている必要があります。

公開クライアントで最も影響が大きいのは code_challenge_methods_supported です。PKCE がないと、モバイルや独自 URL スキームで横取りされた認可コードがそのまま交換され得ます。そのため plain のみの宣言や項目自体の欠落は、警告ではなく致命的な指摘として扱います。

PKCE 値の作られ方

「PKCE セットを生成」は crypto.getRandomValues から 48 バイトの乱数を取り、base64url で符号化して 64 文字のコードベリファイアを表示します。S256 チャレンジはこのベリファイアの SHA-256 要約を base64url にしたもの(43 文字)で、state 値は 24 バイトの乱数(32 文字)です。プロバイダーがコードを付けて戻したときに照合します。

使うべきは S256 です。チャレンジは認可リクエストに載り、ベリファイアはトークン要求までクライアントに留まるため、途中で横取りされたコードは交換できません。plain はベリファイア自体を URL に載せる方式で、plain しか対応しない文書がここで致命的な指摘になる理由です。

このページで確認できないこと

文書は貼り付けられた内容をそのまま読み取ります。プロバイダー側でクライアントが登録済みか、リダイレクト URI が許可リストにあるか、ユーザーにどの同意画面が出るか、エンドポイントが宣言どおりに動作するかは分かりません。それにはプロバイダーへの実際の認可リクエストが必要です。

指摘が出ない結果は、コピーしたメタデータが公開クライアントとして整合していることを意味し、統合が動作する証明ではありません。実際のフロー、トークンの寿命、更新の挙動はプロバイダーに対して検証が必要で、ここでのリダイレクト URI 検査はローカルでの完全一致の確認にすぎません。

最近使ったツール: