ServiceNowのJWT設定手順

Stay hungry. Stay foolish. Your time is limited, so don't waste it living someone else's life.

ServiceNowのJWT設定手順

はじめに

 本書は、ServiceNowでJWTを生成するための手順について説明する。

設定手順

手順は下記の通りである。

  1. JWT署名用証明書を作成する。
  2. ServiceNowのJWTキーを登録する。
  3. ServiceNowのJWTプロバイダーを登録する。
  4. 設定確認用のスクリプトを設定する。
  5. 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ペイロードの設定は、下記の通り。

項目名項目
利用者audmule-dev.application.com
発行者issdevXXXX.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を張り付けて、ペイロードの中身を確認する。

JWTデバッカーサイト,

最後に

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

参考サイト

公式ヘルプ:JWTベアラートークンの設定

公式ヘルプ:JWT生成手順