ServiceNowのJWT設定手順
はじめに
本書は、ServiceNowでJWTを生成するための手順について説明する。
設定手順
手順は下記の通りである。
- JWT署名用証明書を作成する。
- ServiceNowのJWTキーを登録する。
- ServiceNowのJWTプロバイダーを登録する。
- 設定確認用のスクリプトを設定する。
- JWTの設定が正しいかジョブを実行して結果を確認する。
手順詳細
1.JWT署名用証明書を作成する。
下記のサンプルコマンドを実行してJWT署名用の証明書を作成する。
JWT署名用のためCNの設定は実際のFQDNとは違っても問題がない。
プライベートキーを含む[JKS]ファイルと署名を検証するための公開鍵の[PEM]ファイルを作成する。
$ keytool -genkeypair -keystore mule_jwt_client_dev.jks -dname "CN=masaki.com, OU=Mulesoft JWT Dev, O=Masaki Japan Ltd., L=tyuou-ku, ST=Tokyo, C=JP" -keypass password -storepass password -keyalg RSA -sigalg SHA1withRSA -keysize 2048 -alias mule_jwt_client_dev -validity 36524
$ keytool -exportcert -keystore mule_jwt_client_dev.jks -alias mule_jwt_client_dev -file mule_jwt_client_dev.der -storepass password
$ openssl x509 -inform DER -outform PEM -in mule_jwt_client_dev.der -out mule_jwt_client_dev.pem
$ openssl x509 -inform PEM -in mule_jwt_client_dev.pem -pubkey -noout > mule_jwt_client_dev_public.pem
2. ServiceNowのJWTキーを登録する。
Servicenowのサイドメニューで[JWT Keys]を選択し、JWT署名用のサーバ証明書を新規登録する

JWT Keys の名前は、”mule_jwt_dev”とした。
虫眼鏡を押下してJWT署名用証明書を登録する。
Signing Keyは、”password”とする。

添付ボタンを押下しJKS証明書をアップロードし、別名や証明書のパスワード情報を設定する。
Nameは、”mule_jwt_clent_dev”とした。
Key store passwordは、”password”と入力する。

3.ServiceNowのJWTプロバイダーを登録する。
サイドメニューから[JWT Provider]を選択し、JWT生成に必要な情報を設定する。
JWT ProviderのNameは、”mule_jwt_provider”とした。
Signing Configrationは、先ほど設定したJWTKeyを設定する。

[Submit]後、JWTプロバイダー一覧から、登録したJWTプロバイダーを再表示すると下記の画面が表示される。
JWTのペイロード部分を設定する。

JWTペイロードの設定は、下記の通り。
| 項目名 | 項目 | 値 |
|---|---|---|
| 利用者 | aud | mule-dev.application.com |
| 発行者 | iss | devXXXX.service-now.com ※環境によって変更する。 |
| 件名 | sub | “{ \”client_id\”:\”<MuleのAccess Requestで登録したClient_ID>\”}” |
JWTプロバイダー一覧で、対象のJWTプロバイダーを右クリックして[sys_Id]をメモする。

4.設定確認用のスクリプトを設定する。
JWTの設定が正しく行われているか、JWT設定確認用コマンドを設定する。
再度メニューで[Scheduled Jobs]を選択し、新規でジョブを作成する。

スクリプト実行タイプを選択する。

JWT設定確認用のプログラムを設定する。
Nameは、”JWT Generator”とする。

JWT設定確認用のプログラムは以下の通り。
var jwtAPI = new sn_auth.GlideJWTAPI();
var headerJSON = {"alg": "RS256","typ": "JWT"};
var header = JSON.stringify(headerJSON);
var jwtProviderSysId = "{メモしたJWT プロバイダーのSys_ID}";
var jwt = jwtAPI.generateJWT(jwtProviderSysId, header, null);
gs.info("JWT:" + jwt);
5.WTの設定が正しいかジョブを実行して結果を確認する。
登録した[Scheduled Job]を開きなおすと、右上に[Execute Now]ボタンが表示されるので実行する。

実行結果は、[Application Logs]で確認できる。
サイドメニューから、[Application Logs]を選択し、ログの詳細を確認する。

ログのJWT部分をメモする。

JWT.ioのJWTデバッカーにメモしたJWTを張り付けて、ペイロードの中身を確認する。

最後に
いかがだったでしょうか?
ServiceNowのJWTの設定手順について説明しました。
JWTの設定は初期構築時のみ設定する作業なので、忘れたときには是非活用してみてください。では、






