インフラ用語集へ戻る

セキュリティ・認証 / 認証/認可

クライアントIDとは

Client ID。OAuth/OIDCでアプリケーションを識別する公開可能なIDです。

用語集内のカードを見る

この記事で学べること

クライアントIDを、定義だけで終わらせず、現場で出てくる場面、確認材料、見落としやすい点、関連語とのつながりまで順に確認できます。

  1. クライアントIDとは何か
  2. クライアントシークレットとの違い
  3. 環境別に分けて確認する
  4. ログで見るポイント
  5. 変更記録への残し方

クライアントIDとは何か

クライアントID(Client ID)は、OAuth/OIDCでアプリケーションを識別するための公開IDです。IdPや認可サーバーは、このIDを見て、どのアプリからの認可リクエストかを判断します。

クライアントIDは秘密情報ではありません。ブラウザのURL、モバイルアプリ、JavaScript、ログに見えることがあります。守るべき秘密は、機密クライアントで使うクライアントシークレットや秘密鍵です。

ただし公開IDだから雑に扱ってよいわけではありません。クライアントIDは、登録済みのリダイレクトURI、許可スコープ、同意画面、所有者、監査ログと結び付いています。

クライアントシークレットとの違い

クライアントIDはアプリの名札です。クライアントシークレットは、サーバーサイドの機密クライアントが自分自身を証明するための秘密です。SPAやモバイルアプリのように利用者端末へ配布されるアプリでは、シークレットを安全に隠せません。

障害対応でclient_idだけを見ていると、どの秘密情報が使われたか、どのリダイレクトURIが許可されたか、どのスコープを要求したかが抜けます。ログイン成功の裏に、古いアプリ登録や広すぎる権限が残ることがあります。

  • client_idとclient_secretを同じ秘密として扱わない。
  • 公開クライアントと機密クライアントを分ける。
  • PKCE、リダイレクトURI、スコープを同じ登録で確認する。

環境別に分けて確認する

本番、検証、開発を同じクライアントIDで使い回すと、ログや同意画面から影響範囲を追いにくくなります。検証用のリダイレクトURIや広いスコープが本番アプリに残る原因にもなります。

IdPのアプリ登録では、表示名、所有者、リダイレクトURI、証明書/シークレット、API権限、同意状態、最終利用日を確認します。不要なアプリ登録は、削除前に最終利用ログと所有者を見ます。

  • 本番/検証/開発でクライアントIDを分ける。
  • 最終利用日と所有者を棚卸しする。
  • 不要なリダイレクトURIとスコープを削除候補にする。

ログで見るポイント

SSO障害や不審な同意を調査するときは、client_idを軸にすると同じアプリ登録のイベントを追いやすくなります。サインインログ、監査ログ、APIログ、同意ログを同じ時刻帯で突合します。

攻撃や設定ミスの調査では、client_idだけで正規アプリと判断しません。表示名は似せられます。テナント、アプリケーションID、オブジェクトID、所有者、発行元、登録日時を合わせて確認します。

  • client_id、tenant、redirect_uri、scopeを同じイベントで保存する。
  • 同意した利用者と要求権限を確認する。
  • 削除や無効化の前に利用中システムを洗い出す。

変更記録への残し方

クライアントIDの変更では、旧ID、新ID、対象アプリ、IdPテナント、リダイレクトURI、スコープ、シークレット更新有無、確認したログ、戻し条件を残します。IDだけを貼っても、どの認証フローに効く変更か説明できません。

関連語としてOAuth、OIDC、リダイレクトURI、クライアントシークレット、PKCEを並べると、公開識別子と秘密情報の境界を引きやすくなります。

  • 値そのものより登録の所有者と用途を記録する。
  • 同意画面と監査ログの確認結果を残す。
  • 不要アプリの削除条件と期限を決める。

関連語

同じ主要カテゴリの用語

セキュリティ・認証の学習順

同じ主要カテゴリの用語をまとめて確認できます。現在の用語を起点に、前後の用語へ進むと文脈を保ったまま読み進められます。

InfraEngKit内の関連機能