クライアントシークレット【client secret】

概要

クライアントシークレットとは、OAuthなどの認証認可の仕組みにおいて、アプリケーションの身元を証明するために用いられる秘密の文字列。アプリケーション自体を認証するためのパスワードに相当し、クライアントIDと組み合わせて使用される。
クライアントシークレットのイメージ画像

WebサービスAPIを利用するアプリケーションは、サービス提供者にアプリケーションを登録する際、クライアントIDとクライアントシークレットの2種類の認証情報を発行してもらう。クライアントIDがアプリケーションを識別する公開情報であるのに対し、クライアントシークレットは外部に漏らしてはならない秘密情報である。

アプリケーションはAPIを利用する際、この2つを認証サーバに提示してアクセストークンの発行を要求する。サーバは受け取った値を検証し、正規のアプリケーションと確認できた場合にのみトークンを発行する。これにより、悪意ある第三者が正規のアプリケーションになりすまして不正にトークンを取得することを防ぐ。

クライアントシークレットの管理はパスワードと同様に厳格な取り扱いが求められる。ソースコードに直接記述してGitHubなどの公開リポジトリアップロードすると、第三者にAPIを不正利用される恐れがある。環境変数や秘密情報管理ツールに格納し、コードから分離して管理するのが一般的な対策である。漏洩が疑われる場合は、管理画面からシークレットを無効化して新たなものを再発行する。多くの認証サービスでは、こうした再発行や入れ替え(ローテーション)の機能が提供されている。

クライアントシークレットを安全に保持できるのは、ソースコードが外部から閲覧されないサーバサイドのアプリケーションに限られる。スマートフォンアプリやWebブラウザ上で動作するJavaScriptプログラムは、端末側にクライアントシークレットを渡してしまう形になってしまうため、クライアントシークレットを用いない「PKCE」(Proof Key for Code Exchange)などの方式で代用される。

こうした仕組みが登場した背景には、インターネット上でのWeb APIの普及がある。かつては、外部のサービスに自分のアカウントパスワードを直接入力して連携させる方式が一部で見られたが、これはセキュリティ上のリスクが極めて高かった。そのため、利用者の認証情報を他社に渡すことなく、アプリケーション単位で安全に認証や権限の付与を行う共通の標準規格として「OAuth」や「Open ID Connect」が定められた。

(2026.6.25更新)
 
この記事の著者 : (株)インセプト IT用語辞典 e-Words 編集部
1997年8月より「IT用語辞典 e-Words」を執筆・編集しています。累計公開記事数は1万ページ以上、累計サイト訪問者数は1億人以上です。学術論文や官公庁の資料などへも多数の記事が引用・参照されています。