CData ServiceNow Drivers で OAuthJWT 認証を使う方法

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

CData ServiceNow Drivers で OAuthJWT 認証を使う方法

CData ServiceNow Drivers はさまざまな認証方式に対応していますが、その中でも OAuthJWT(OAuth 2.0 JWT Bearer Grant) はパスワード不要でサーバー間通信を安全に実現できる強力な選択肢です。証明書ベースの署名付き JWT を ServiceNow に送信してアクセストークンを取得する仕組みで、ヘッドレス環境やバッチ処理・ETL ジョブなどの自動化シナリオに最適です。本記事では、ServiceNow 側の設定から CData ドライバーの接続文字列構成まで、一連の手順をステップバイステップで解説します。

OAuthJWT 認証の仕組み

通常の OAuth 認証はブラウザを介したインタラクティブな操作(認可画面の表示・ユーザー同意)が必要ですが、OAuthJWT では代わりに 署名済み JSON Web Token(JWT) を ServiceNow のトークンエンドポイントに直接送信し、アクセストークンを取得します。

認証フローは以下の通りです。リフレッシュトークンは発行されないため、アクセストークンの有効期限が切れた場合は再度 JWT を送信してトークンを取得します。CData ドライバーはこの処理を自動で行います。

CData ServiceNow Drivers で OAuthJWT 認証を使う方法

設定手順

1. RSA キーペアと自己署名証明書を生成する

ServiceNow が JWT の署名を検証するために、RSA 公開鍵(X.509 証明書)を事前にインスタンスへ登録する必要があります。openssl を使って PKCS#8 形式の秘密鍵と自己署名証明書を生成します。

まず PKCS#8 形式の秘密鍵を生成します。実行するとパスフレーズの入力を求められます。

openssl genrsa 2048 | openssl pkcs8 -topk8 -v2 des3 -inform PEM -out rsa_key.p8

次に公開鍵証明書(X.509)を生成します。openssl.cnf が見つからないエラーが出る場合は、作業フォルダに以下の内容で openssl.cnf を作成してから実行してください。

[req]
distinguished_name = req_distinguished_name

[req_distinguished_name]
# Windows の場合は環境変数で cnf を指定
set OPENSSL_CONF=C:\path\to\openssl.cnf

openssl req -new -x509 -key rsa_key.p8 -out public_cert.pem -days 365 ^
  -subj "/CN=CData ServiceNow Client/O=YourCompany/C=JP"
# Linux / macOS の場合
openssl req -new -x509 -key rsa_key.p8 -out public_cert.pem -days 365 \
  -subj "/CN=CData ServiceNow Client/O=YourCompany/C=JP"

2. ServiceNow に公開鍵証明書を登録する

ServiceNow の Navigator で System Definition > Certificates に移動し、新しいレコードを作成します。

フィールド

Name

cdata_servicenow_client(任意)

Format

PEM

Type

Trust Store Cert

PEM Certificate

public_cert.pem の内容を貼り付け

CData ServiceNow Drivers で OAuthJWT 認証を使う方法

3. ServiceNow に JWT API エンドポイントを作成する

Navigator で System OAuth > Application Registry に移動し、New をクリックします。表示される選択肢から Create an OAuth JWT API endpoint for external clients を選択します。

以下のフィールドを入力・設定します。

フィールド

設定値

Name

CData JDBC Client(任意)

Active

チェックを入れる

User Field

Email(JWT の sub クレームと照合するフィールド)

Enable JTI Verification

必要に応じてチェックを外す(開発・テスト時は OFF 推奨)

保存後、レコードの OAuth Entity Scopes 関連リストから useraccount スコープを追加します。このスコープがないと認証ユーザーのコンテキストでトークンが発行されず、データアクセスに失敗する場合があります。

CData ServiceNow Drivers で OAuthJWT 認証を使う方法

フォームを保存すると Client IDClient Secret が自動生成されます。これらは後の接続文字列設定で使用するので、必ずメモしておいてください。

CData ServiceNow Drivers で OAuthJWT 認証を使う方法

4. JWT Verifier Maps を設定する

Application Registry レコードの下部にある関連リスト JWT Verifier Maps から New をクリックして新しいマッピングを追加します。

新規作成フォームで以下を入力します。

フィールド

設定値

Name

CData JDBC Client(任意)

Oauth jwt

Application Registry のレコード名(自動入力または検索して選択)

Sys Certificate

手順 2 で作成した証明書レコード

CData ServiceNow Drivers で OAuthJWT 認証を使う方法

以上でServiceNow側の設定は完了です。

5. CData ServiceNow Drivers の接続文字列を設定する

それでは実際にドライバーから接続する方法を説明します。CData ドライバーの接続 URL に以下のプロパティを設定します。

jdbc:servicenow:AuthScheme=OAuthJWT;
Url=https://[your-instance].service-now.com;
OAuthClientId=[Client ID(手順3で取得)];
OAuthClientSecret=[Client Secret(手順3で取得)];
OAuthJWTCert=[rsa_key.p8 のパス];
OAuthJWTCertType=PEMKEY_FILE;
OAuthJWTCertPassword=[rsa_key.p8 生成時のパスフレーズ];
OAuthJWTIssuer=[Client ID(手順3で取得)];
OAuthJWTSubject=[ServiceNow 認証ユーザーのメールアドレス];

各プロパティの説明は以下の通りです。

プロパティ

説明

AuthScheme

OAuthJWT を指定

Url

ServiceNow インスタンスのベース URL

OAuthClientId

Application Registry で生成された Client ID

OAuthClientSecret

Application Registry で生成された Client Secret

OAuthJWTCert

PKCS#8 秘密鍵ファイル(rsa_key.p8)のフルパス

OAuthJWTCertType

PEMKEY_FILE を指定(PEM 形式の秘密鍵ファイル)

OAuthJWTCertPassword

rsa_key.p8 生成時に設定したパスフレーズ

OAuthJWTIssuer

JWT の iss クレーム。通常は Client ID と同じ値

OAuthJWTSubject

JWT の sub クレーム。ServiceNow ユーザーのメールアドレス

Java コードからの接続例(CData ServiceNow JDBD Driverを使用):

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

public class ServiceNowOAuthJWT {
    public static void main(String[] args) throws Exception {
        Class.forName("cdata.jdbc.servicenow.ServiceNowDriver");

        String url = "jdbc:servicenow:"
            + "AuthScheme=OAuthJWT;"
            + "Url=https://[your-instance].service-now.com;"
            + "OAuthClientId=[your_client_id];"
            + "OAuthClientSecret=[your_client_secret];"
            + "OAuthJWTCert=/path/to/rsa_key.p8;"
            + "OAuthJWTCertType=PEMKEY_FILE;"
            + "OAuthJWTCertPassword=[your_passphrase];"
            + "OAuthJWTIssuer=[your_client_id];"
            + "[email protected];";

        try (Connection conn = DriverManager.getConnection(url);
             Statement stmt = conn.createStatement();
             ResultSet rs = stmt.executeQuery("SELECT number, short_description, state FROM incident LIMIT 10")) {

            while (rs.next()) {
                System.out.println(rs.getString("number") + " | "
                    + rs.getString("short_description") + " | "
                    + rs.getString("state"));
            }
        }
    }
}

まとめ

CData ServiceNow Drivers の OAuthJWT 認証を使うことで、パスワードや対話的なブラウザ操作なしにサーバー間で安全に ServiceNow データへアクセスできます。ETL ジョブ・データパイプライン・バックエンドサービスなど、自動化が求められる環境に特に適した認証方式ですでの、これらのツールからServiceNow ドライバーをご使用の際はぜひこの方式をご検討ください。

関連リンク