JWT/RSAトークンの作成方法

 以下の手順でJSON Web Token(JWT)/RSAトークンを生成します:

1. ターミナルより以下2つのコマンドを実行しRSAキーペアを生成します(1)

openssl genrsa -out mykey.pem 4096

openssl rsa -in mykey.pem -pubout -out pubkey.pem

図1 RSAキーペアコマンド

 

2. パブリックキーをPODにインポートするためService Accountを作成し(または既存のService Accountを利用し)現在のパブリックキーを新たに生成したpemの値をReplaceボタンで反映させます(図2および3)

2.png 
図2 現在のパブリックキー

 3.png
図3 Replaceボタン
 

3. 次のリンクにあるjwt-helperを用い署名付きJWTを作成します

https://filevault.symphony.com/index.php/s/BisoLiomZWLrijW

パスワードは「Symphony@123」です。

4. jwt-helper.jarpempubkey.pemを同じフォルダー内に置きます(図4)

JWT_04.png
図4 RSAフォルダー

5. 次のコマンドをBash/Terminal/LinuxベースのOSで実行しJWTトークンを取得します(図5および6)

java -jar jwt-helper.jar -user AlexBotRSA -key mykey.pem

図5 コマンド

上記コマンドの「AlexBotRSA」はステップ2でpemの値を反映させたService Accountusernameであり、mykey.pemはステップ1で作成したpemキーです。

6.png
6 JWTトークン

6. JWTトークン取得から5分以内に以下のエンドポイントを利用しsesssionTokenおよびkeyManagerTokenを作成します:

Postmanで作成する場合:

Header: Content-Type
Value: application/json

sessionToken: (
ポート指定不要)
https://podname.symphony.com/login/pubkey/authenticate
上記URLの「podname」をお客様のpodnameと置き換えてください

{
"token": "eyJhbGciOiJSUzUxMiJ9.eyJzdWIiOiJBbGV4Qm90UlNBIiwiZXhwIjoxNTMxODIxMDQ0fQ.PzsEdray7qMtJCAm0ywfsn9I639ZI4AZ0UNJD4zAnYn9s6NqmA30KT33RRI1AvQOjpEhRG45OKgbBHfpA0vyBhkP5zr_JeG-pr2xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxpYjvg9Z7PPxY3Gu8kJQsV1k26wcUunFULs1rQCtUDuFFfBRdruIQLyKV3INmL2E0_m5WLzYmdiAlFvOFrZDtuadvWQCB3IYwM8qpXywcrN8-zDyHnOqC2CvhdhFkS_cz6IecvD1py4RB5gtjYlHFWfe6rm-zEbCGpBYpD_77DiFGXnpI-8nMBg1Tr1onDXHMN9Wkp3brQ_oXLLWQcduur3EL5N8a3MWfviS5kKh4QI7w0Y_Q6beP5u9PywAOLuKL2RaUXBC7N7BV3jSxurzaTWaBWmjN-DgweqHcTbxcdTnNxbseSeP569JL8NR2xz99l5M7uH1P72jlW9_ad-CZqKHTleG5_E4ncHJW7Y3TJosmEWeolMSxr-xkgmIkVw4kEcBiYFoc77ezIgQrMzu8AbI_4jv8"
}

実行後以下の様なレスポンスがかえって参ります:

{
 "token": "eyJhbGciOiJSUzUxMiJ9.eyJzdWIiOiJBbGV4Qm90UlNBIiwiaXNzIjoic3ltcGhvbnkiLCJzZXNzaW9uSWQiOiJlYWExZTkzMzFlNGI1ZTUzODI1MDZjNzI3YjkxMTUyZGRjZDY3OTljNzM5MmI3YjIwOTQyNDE0NTZkODc1MDEwOxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxGEH3hd-LZv2uly_IKXxdS8uR6a4c3H7Gp7muw3487RRplIPOvsQsv6jd488UP_YbQOs6O__WP1HW7vMxO6RwTW9vRaH3qbrB97JsfFGX090mzbcvjhxBoqW_y37yTr9at7fJinIaC6qKfwicfrSdBrFJHuf9_ZxOdk9PoAQSO-bylRZBsIk4chUvgOBKDgbYaGvlIIzsyYl9XOkr3OWVELS2XXIWejaErKvvri3GYECCUYb4Ptf_1lLqxgkgM2MrUrmY0uR448zhMH2i2BrDK_kOeMvDitS3lNoSjPoApM915GQ",
    "name": "sessionToken"
}

keyManagerToken: (ポート指定不要)
https://podname.symphony.com/relay/pubkey/authenticate
上記URLの「podname」をお客様のpodnameと置き換えてください

{

 "token": "eyJhbGciOiJSUzUxMiJ9.eyJzdWIiOiJBbGV4Qm90UlNBIiwiZXhwIjoxNTMxODIxMDQ0fQ.PzsEdray7qMtJCAm0ywfsn9I639ZI4AZ0UNJD4zAnYn9s6NqmA30KT33RRI1AvQOjpEhRG45OKgbBHfpA0vyBhkP5zr_JeG-pr2xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxpYjvg9Z7PPxY3Gu8kJQsV1k26wcUunFULs1rQCtUDuFFfBRdruIQLyKV3INmL2E0_m5WLzYmdiAlFvOFrZDtuadvWQCB3IYwM8qpXywcrN8-zDyHnOqC2CvhdhFkS_cz6IecvD1py4RB5gtjYlHFWfe6rm-zEbCGpBYpD_77DiFGXnpI-8nMBg1Tr1onDXHMN9Wkp3brQ_oXLLWQcduur3EL5N8a3MWfviS5kKh4QI7w0Y_Q6beP5u9PywAOLuKL2RaUXBC7N7BV3jSxurzaTWaBWmjN-DgweqHcTbxcdTnNxbseSeP569JL8NR2xz99l5M7uH1P72jlW9_ad-CZqKHTleG5_E4ncHJW7Y3TJosmEWeolMSxr-xkgmIkVw4kEcBiYFoc77ezIgQrMzu8AbI_4jv8"
}

実行後以下の様なレスポンスがかえって参ります:

{
 "token": '01003fffe37203f4f3b88d9f9a8d73a5b412c9e132f9e34e5f647f841fd66330a5e4807af937b7e3e655ac08449ad86cxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx6c9023d00193d0db3434235a19f372a0ceff90078daa521896825bd47649ef63e888d603d9e7fd5e96379c2b447a74e139d7c7e0cd8b7d8e05bcf6ebd271bc04aea52373f2924127af3432e74b1b2c4f89081cd979833ea62215f8',
 "name": "keyManagerToken"
}

Curlで作成する場合:

RSA Session Token:
curl 'https://podname.symphony.com/login/pubkey/authenticate' -X POST -H 'Content-Type: application/json' -d '{"token": "ステップ5にて取得したJWTトークンを入力"}'
URLの「podname」をお客様のpodnameと置き換えてください

RSA KM Token:
curl 'https://podname-km.symphony.com/relay/pubkey/authenticate' -X POST -H 'Content-Type: application/json' -d '{"token": "ステップ5にて取得したJWTトークンを入力"}'
URLの「podname」をお客様のpodnameと置き換えてください

JCurlで作成する場合:

以下のURLをご参照ください
https://github.com/symphonyoss/JCurl

RSA Session Token:
java -jar jcurl.jar -d '{"token": "your JWT-Helper generated token"}' https://podname.symphony.com/login/pubkey/authenticate
jcurl.jarにダウンロードされたバージョンを入力ください(例:jcurl-0.9.16.jar)
URLの「podname」をお客様のpodnameと置き換えてください

RSA KM Token:
java -jar jcurl.jar -d '{"token": "your JWT-Helper generated token"}' https://podname-km.symphony.com/relay/pubkey/authenticate
jcurl.jarにダウンロードされたバージョンを入力ください(例:jcurl-0.9.16.jar)
URLの「podname」をお客様のpodnameと置き換えてください

トークンの確認作業(任意)

以下のURLにアクセスいただき
https://jwt.io/

ステップ5で取得されたJWTトークンをEncoded入力スペースに貼り付けます。
Decoded下にあるVERIFY SIGNATUREのpublic key fieldにpubkey.pem、private key fieldにmykey.pem内容を貼り付け複合化された内容を確認できます。

トークンのテスト(任意):

以下のEchoエンドポイントを参照
https://YOUR_POD_SUBDOMAIN.symphony.com/agent/v1/util/echo
上記URLの「YOUR_POD_SUBDOMAIN」をお客様のpodnameと置き換えてください
ステップ6で取得したRSA sessionAuth および RSA Keyauth トークンを用いることにより{'message': 'Hello World'}の返答を確認できれば成功です。

お客様の設定によりこちらの記事の内容が当てはまらない場合がございます。
その場合お客様内シンフォニーアドミニストレーターまたはIT部署様にお問い合わせください。