
本記事ではCData NetSuite Drivers でOAuth JWT 認証を使う方法について説明します。
CData NetSuite Drivers はNetSuite がサポートする様々な認証方式が使用できます。このうちOAuth JWT 認証はOAuth 2.0 JWT ベアラートークンフロー を使用した認証方式です。認証時にブラウザを開いてログインする必要がないため、アプリケーション間での認証に向いています。OAuth JWT 認証ではユーザが証明書と秘密鍵のペアを用意し、証明書をNetSuite に登録したうえでドライバーから秘密鍵を使って接続します。
1. 証明書を作成する
はじめに証明書を作成します。証明書の要件は以下の通りです。
- 公開鍵はx.509 形式で、拡張子は.cer、.pem、または.crt
- RSA 鍵の場合、長さは3072 ビットまたは4096 ビット。EC (楕円曲線暗号) 鍵の場合、長さは256 ビット、384 ビット、または521 ビット
- 証明書の最大有効期間は2 年。証明書の有効期間がこれより長い場合は自動的に有効期間が2 年に短縮される
- 1 つの証明書は、特定のレコード、ロール、エンティティの組み合わせにのみ使用。同じ統合レコードを複数のエンティティまたはロールに使用する場合は、固有の組み合わせごとに異なる証明書を使用する必要がある。
NetSuite のドキュメントにopenssl を用いた自己署名証明書作成コマンドのサンプルが記載されています。今回はサンプルに従って、以下のコマンドで自己署名証明書と256bit のEC 鍵を生成します。
openssl req -new -x509 -newkey ec -pkeyopt ec_paramgen_curve:prime256v1 -nodes -days 365 -out public.pem -keyout private.pem
上記コマンドを実行すると証明書 (public.pem) と 秘密鍵 (private.pem) がそれぞれ生成されます。これらのファイルは後の設定で使用します。
2. 統合を作成する
NetSuite で外部接続を行う統合 (Integration) を作成します。
メニューの[設定] から [インテグレーション]、[統合を管理] と選択し、[新規]をクリックして統合作成画面を開きます。
はじめに [名前] に適当な統合名を入力し、[状態] が「有効」になっていることを確認します。

次に認証タブで規定のチェックを外し、[クライアント資格情報(マシン間)付与] をチェックします。また、適用範囲の [RESTLET]、[REST WEBサービス]、[SUITEANALYTICS CONNECT] から使用する機能をチェックします。今回は REST WEBサービス のみをチェックします。

最後に [保存] をクリックすると設定が保存され、画面上に以下のメッセージが表示されます。

画面下の[クライアントの資格情報] に消費者キー/クライアントID が表示されていますので、この値を保存しておきます。消費者キーと消費者のシークレットはこのページから移動すると取得できなくなりますのでご注意ください。

3. クライアント資格証明を作成する
NetSuite でクライアント資格証明の設定を行います。
メニューの[設定] から [インテグレーション]、[OAuth 2.0クライアント資格証明(M2M)設定] を選択し、OAuth 2.0 クライアント資格証明設定画面を開きます。
新しい資格証明を作成するため [新規作成] をクリックします。

新規クライアント資格証明マッピングの作成画面が表示されます。 [エンティティ] にユーザ名、[ロール] にロールを設定、[適用] に前章で作成した統合名を設定します。[証明書] には「1. 証明書を作成する」で作成した証明書ファイルを設定します。

[保存] をクリックすると資格証明が保存されます。資格証明一覧に証明書ID が表示されていますので、この値を控えておきます。

これで接続準備は完了です。
4. ドライバから接続する
最後にドライバから接続する手順を説明します。以下にOAuth JWT 認証に必要なプロパティを示します。
プロパティ |
説明 |
本シナリオの設定値 |
AccountId |
NetSuite のアカウントId |
|
Schema |
スキーマ。OAuth JWTはSuiteQLでのみサポートされている |
SuiteQL |
AuthScheme |
認証方法 |
OAuthJWT |
JWTScope |
スコープ |
rest_webservices |
OAuthJWTHeaders |
ヘッダ、kid=証明書IDを指定 |
kid = <「3.クライアント資格証明を作成する」で取得した証明書ID> |
OAuthJWTCertType |
公開鍵証明書の種類 |
PEMKEY_FILE |
OAuthJWTCert |
公開鍵証明書のパスを設定 |
private.pem のファイルパス |
OAuthJWTIssuer |
クライアント資格証明の発行者のキー |
「2.統合を作成する」で取得した消費者キー |
OAuthJWTEncryption |
公開鍵暗号化アルゴリズム |
ES256 |
JDBC ドライバでの設定例
JDBC ドライバでの接続文字列の例を以下に示します
jdbc:netsuite:AccountId=TEST12345;Schema=SuiteQL;AuthScheme=OAuthJWT;OAuthJWTHeaders="kid=s-2UpeYQutkhMY9lYG2MXkyWSmXDrWBsKPIDnq0pwVY";JWTScope=rest_webservices;OAuthJWTCertType=PEMKEY_FILE;OAuthJWTCert="C:\Keys\private.pem";OAuthJWTIssuer=be716ea8f48c00254998d0ac1ed918580ce570fa9d6da4092d69546cb61b91fc;OAuthJWTEncryption=ES256;
ODBC ドライバでの設定例
ODBC ドライバでのDSN 設定例を以下に示します。

おわりに
本記事ではCData NetSuite Drivers でOAuth JWT 認証を使って接続する方法について、証明書と秘密鍵の作成からNetSuite 側での統合の設定、そしてドライバーでの接続手順について説明しました。CData NetSuite Drivers は30 日間無料でお使いいただけます。NetSuite とのアプリケーション間連携をご検討の方はぜひお試しください。
関連コンテンツ