CData Salesforce ドライバー — ヘッドレスマシンで OAuth PKCE 認証する方法

by 浦邊信太郎 | May 22, 2026 | Last Updated: May 22, 2026

CI/CD サーバーやデータ連携基盤など、ブラウザを起動できないヘッドレス環境でも、CData JDBC Driver for Salesforce を使えば Salesforce に安全に接続できます。本記事では、OAuth 2.0 の PKCE(Proof Key for Code Exchange)拡張を利用した手動認証フローを解説しますGetAuthorizationUrl ストアドプロシージャと PKCEVerifier プロパティを組み合わせることでclient_secret なしでも高いセキュリティを維持しつつ、ヘッドレスマシン上での OAuth 認証を実現できます。

前提条件

- CData JDBC Driver for Salesforce がインストール済みであること

- Salesforce 組織に接続された 接続アプリケーション(Connected App) が作成済みであること

- 接続アプリケーションで OAuth PKCE が有効化されていること(デフォルトで有効)

- DBeaver や DbVisualizer など、JDBC 接続を実行できるツール(または Java コード)が利用できること

- 別途 ブラウザを開ける端末(手元の PC 等)が 1 台あること

OAuth PKCE とは

PKCE は、OAuth 2.0 Authorization Code Flow に対するセキュリティ拡張です。クライアントが code_verifier(乱数文字列)と、それを SHA-256 でハッシュ化した code_challenge をペアで生成し、認証サーバーとの間で検証します。通常の OAuth フローでは client_secret による認証が必要ですが、PKCE を利用することで client_secret を省略しても認可コードcode)の横取り攻撃を防止できます。これによりclient_secret を安全に保管できないヘッドレスサーバーや SPA などに適した認証フローとなります。CData JDBC Driver ではGetAuthorizationUrl ストアドプロシージャが code_verifier の生成と code_challenge の計算を内部で行い、取得した PKCEVerifier を接続プロパティとして保持する仕組みになっています。

設定手順

1. 接続アプリケーションで OAuth PKCE を有効化する

Salesforce の接続アプリケーション(Connected App)設定で、以下を確認・設定します。

- OAuth 設定を有効化: チェック済み

- PKCE 拡張を要求: チェック済み(下図参照)

- コールバック URL: http://localhost:33333 など(ヘッドレス環境では実際にリッスンしない URL でも可)

- OAuth スコープ: 必要なスコープを付与(例: api, refresh_token, offline_access

CData Salesforce ドライバー — ヘッドレスマシンで OAuth PKCE 認証する方法

2. AuthScheme=OAuthPKCE で初期接続する

ヘッドレスマシン(またはローカルの JDBC ツール)から、以下の接続文字列で初期接続します。このとき InitiateOAuth=OFF を設定することで、ドライバーが自動的にブラウザを開こうとするのを防ぎます。

jdbc:salesforce:AuthScheme=OAuthPKCE;
OAuthClientId=[YOUR_CLIENT_ID];
InitiateOAuth=OFF;

ポイント: AuthScheme=OAuthPKCE を設定することで、後続のストアドプロシージャが PKCE フローに対応した認証 URL と PKCEVerifier を返すようになります。

3. GetAuthorizationUrl ストアドプロシージャを実行して認証 URL と PKCEVerifier を取得する

接続後、以下の SQL を実行します。

EXEC GetOAuthAuthorizationUrl
CallbackUrl = 'http://localhost:33333',
GrantType = 'Code';

実行結果として、以下の 2 つの値が返されます。

列名

内容

AuthorizationUrl

ブラウザで開く Salesforce の認証 URLcode_challenge 込み

PKCEVerifier

code_verifier の値(後の手順で必ず使用する

*PKCEVerifier の値は必ずメモしてください。** 次のステップで使用します。

4. ブラウザで認証 URL にアクセスしてコードを取得する

手順 3 で取得した AuthorizationUrl を、ブラウザが使える別の端末(手元の PC など)で開きます。

1. URL をブラウザのアドレスバーに貼り付けてアクセスします。

2. Salesforce のログイン画面が表示されるのでユーザー名・パスワードを入力します。

3. 接続アプリケーションへのアクセス許可を求める同意画面が表示されるので「許可」をクリックします。

4. 認証後、ブラウザはコールバック URL(例: http://localhost:33333/?code=XXXX&state=YYYY)にリダイレクトされます。

5. URL 中の code= に続く値(**認可コード**)をコピーします。

CData Salesforce ドライバー — ヘッドレスマシンで OAuth PKCE 認証する方法

5. OAuthVerifier と PKCEVerifier を設定して本接続する

手順 3 で取得した PKCEVerifier と、手順 4 で取得した認可コードcode)を使って、以下の接続文字列でヘッドレスマシンから本接続します。

jdbc:salesforce:AuthScheme=OAuthPKCE;
OAuthClientId=[YOUR_CLIENT_ID];
InitiateOAuth=GETANDREFRESH;
OAuthVerifier=[手順4で取得したcode];
PKCEVerifier=[手順3で取得したPKCEVerifier];
OAuthSettingsLocation=/etc/cdata/salesforce_oauth.json;

プロパティ

説明

AuthScheme

OAuthPKCE

PKCE フローを使用することを指定

OAuthClientId

接続アプリの Client ID

Salesforce の接続アプリケーションから取得

InitiateOAuth

GETANDREFRESH

初回トークン取得と自動更新を有効化

OAuthVerifier

手順4の認可コード

code= 以降の値

PKCEVerifier

手順3の PKCEVerifier

ストアドプロシージャの戻り値

OAuthSettingsLocation

任意のファイルパス

暗号化されたトークンの保存先

接続に成功すると、ドライバーが OAuthVerifierPKCEVerifier を使って Salesforce のトークンエンドポイントとやり取りし、アクセストークンとリフレッシュトークンを取得します。取得したトークンは OAuthSettingsLocation に暗号化されて保存されます。

6. 2 回目以降の接続(自動トークン更新)

初回接続が成功すると、以降は OAuthVerifierPKCEVerifier は不要ですOAuthSettingsLocation に保存されたリフレッシュトークンを使って自動更新されます。

jdbc:salesforce:AuthScheme=OAuthPKCE;
  OAuthClientId=[YOUR_CLIENT_ID];
  InitiateOAuth=REFRESH;
  OAuthSettingsLocation=/etc/cdata/salesforce_oauth.json;

CI/CD パイプラインや定期バッチでは、この接続文字列を環境変数や Secret Manager に保存して利用することを推奨します。

まとめ

本記事では、CData JDBC Driver for Salesforce を使って、ブラウザを起動できないヘッドレスマシン上で OAuth PKCE 認証を行う手順を解説しましたGetAuthorizationUrl ストアドプロシージャが PKCEVerifier の生成を内部で処理してくれるため、PKCE の複雑な暗号処理を自前で実装する必要はありません。初回認証後は OAuthSettingsLocation によるトークン自動更新が有効になるため、以降の接続は接続文字列を変えるだけで継続的に利用できます。