APRESIA Technical Blog

株式会社XEENUTS/EXGATE AN-ManagerStation連携検証

はじめに

株式会社XEENUTS様が提供するEXGATEとAN-ManagerStationの連携検証を行いましたのでその結果をご紹介したいと思います。EXGATEのデバイス認証+シングルサインオンを利用し、外出先でも会社が認めた端末からすぐにセキュアにアクセスできるようになります。本記事はEXGATEのPUSH機能も利用し、AN-ManagerStationと連携したPUSH通知送信も検証いたしました。

EXGATE製品紹介ページは以下URLを参照してください。
   https://xeenuts.com/

検証概要

◆検証の目的
1.  担当者が外出先でもすぐに異常を知り、かつ会社が認めた端末からすぐにAN-ManagerStationにアクセスする利用形態を想定し、EXGATEを介して、クラウド(AWS)上に設置した AN-ManagerStationにiPhoneからアクセスする検証を行う。
2. また、AN-ManagerStationからのアラームを、EXGATEを介することによって、スマートデバイスのPUSH通知として受信する検証を行う。

◆検証構成

iPhoneからEXGATEを介したAN-ManagerStationへのアクセスに必要な設定

◆今回はデモ用に準備頂いたクラウド上のEXGATEを使用します。
◆WEBブラウザでEXGATE Administration Toolにアクセスして接続対象のAN-ManagerStationのURLや認証のためのアカウント情報を登録します。
◆EXGATEに接続する端末(アカウント)がどのサービスを利用するかなどの関連付けも、 EXGATE Administration Toolで設定します。

EXGATE Administration Toolでの設定

◆WEBブラウザでEXGATE Administration Toolにアクセス、ログインします。

◆ログインすると「端末申請承認」画面が表示されます。「メニュー」をクリックし設定したい画面に切り替えます。

◆まずEXGATEで使用するユーザを登録します。今回は事前に準備してあったデモ用のアカウントを使用します。
◆新規にアカウントを作成したり、設定を編集する場合は、メニューを使用して「ユーザ設定」画面に切り替えて実施します。

◆続いて、メニューを使用して「コンテンツ設定」画面に切り替え。今回検証するAN-ManagerStationを登録します。

◆「新規」ボタンをクリックしAN-ManagerStationにアクセスするために必要な情報を入力していきます。
-連携するAN-ManagerStationのURLやアプリケーションタイプ・SSO(シングルサインオン)のためのJavaScriptコードなど。
-今回はAWS上に構築したAN-ManagerStationを利用します。

◆利用ブラウザは、Windows版はChrome、iOS版はWKWebViewを設定します。

◆続いて、EXGATEを介してAN-ManagerStationにアクセスするために、EXGATEで登録したユーザとAN-ManagerStationを紐づける設定をします。

◆メニューから「ユーザ・コンテンツ関連付け」画面に切り替え、「新規」ボタンをクリックし、関連付けるユーザ名とコンテンツ、コンテンツにログインするためのログイン名とパスワードを設定します。
– 今回はユーザが「デモユーザ」、コンテンツが「AN-ManagerStation」になります。

◆これでサーバ側の準備はひとまず完了になります。
– 厳密には、後ほどクライアントから最初のアクセスがあった場合に端末のアクセスを承認するか否かの設定が必要になります。

◆続いてクライアント側の準備を行います。

クライアント(iPhone)での設定

◆iPhoneにはEXGATEのクライアントアプリをインストールします。
◆App Storeから「exgate」で検索すれば見つかります。

◆EXGATEのクライアントアプリから接続するEXGATEサーバの情報を設定します。
◆今回はデモ用に準備頂いたサーバ・ユーザの情報を入力します。

◆必要な情報を入力してから、ログインをタップし実行すると、「この端末は利用申請中です」という旨のダイアログが表示され、ログインに失敗します。

◆再度EXGATE Adminisration Toolにアクセスしユーザー申請を承認します。

EXGATE Administration Toolでの設定

◆初めてクライアントからEXGATEサーバにアクセスすると、そのクライアント端末は承認待ちになります。

◆EXGATE Administration Toolの「端末申請承認」画面に切り替えると、先ほどアクセスを試みたクライアントの端末が承認待ちリストに登録されているので、選択し承認します。

◆「端末設定」画面から承認された端末を確認することができます。

クライアント(iPhone)からEXGATEを介した AN-ManagerStationへのアクセス

◆クライアント端末が承認されるとEXGATEを介してAN-ManagerStationへアクセス可能になります。
◆EXGATEにログインすると、メニューの中にアクセス可能なコンテンツとして「AN-ManagerStation」があることが確認できます。

◆AN-ManagerStationのボタンをタップすると、AN-ManagerStationのログインダイアログの画面が表示されます。

◆EXGATE Administration Toolにおいて、AN-ManagerStationへのシングルサインオン(SSO)の設定がされているため、 AN-ManagerStationのユーザー名とパスワードは自動的に入力され、クライアント側はAN-ManagerStationのアカウント情報にを意識することなくアクセスすることが可能になります。

◆以上の手順で、クライアント(iPhone)からEXGATEを介したAN-ManagerStationへのアクセスを実現することができました。

◆ただしAN-ManagerStationはPCで操作することを前提にUIがデザインされているため、iPhoneでもかろうじて表示・操作できますが、iPadなどタブレット端末の方が快適に表示・操作できると思います。

◆iPhoneなど小型端末でのオペレーションは今後の課題になります。

AN-ManagerStationからのアラームをスマートデバイスのPUSH通知として受信する設定

◆EXGATEサーバにはiPhoneなどモバイルデータ通信が可能なスマートデバイスにPUSH通知するためのAPIが用意されています。

◆PUSH通知APIをたたくスクリプト(バッチ)を作成し、AN-Managerのアラームのアクションとして設定することで、
AN-ManagerStationのアラームをスマートデバイスのPUSH通知として受信できるようにします。

◆シェルスクリプト(Linux版)

curl \
-v \
-d @- \
https://exgate.jp/notifier/apis/notification \
<< EOF
{
	"tenantCode":"apr",
	"cooperationPasswordHash": "83c592f9bb3f6afc6d6f36dd9b1e33411764fc06",
	"message":"PUSH API TEST",
	"notifications":[{
		"loginName":"demo",
		"message": "${1} において、${2}"
	}]
}
EOF

AN-ManagerStationはアクションのスクリプトにアラームが発生した機器のIPアドレス・ホスト名や
アラームのメッセージ文字列を引数として渡すことができるため、PUSH通知するメッセージの中に
それら引数を展開することで汎用的に使用できるスクリプトになるように工夫しました。

◆バッチファイル(Windows版)

@echo off

chcp 65001

(
echo {
echo 	"tenantCode":"apr",
echo 	"cooperationPasswordHash": "83c592f9bb3f6afc6d6f36dd9b1e33411764fc06",
echo 	"message":"PUSH API TEST",
echo 	"notifications":
echo 		[{
echo 			"loginName":"demo",
echo 			"message": "%~1 において、 %~2"
echo 		}]
echo }
) | curl -v -d @- https://exgate.jp/notifier/apis/notification

exit /b

curl.exeは内部で文字列をUTF-8で扱うため、文字コードをUTF-8で扱うように工夫が必要になります。

◆今回の検証ではLinux環境でAN-ManagerStationを運用しているので、Linux環境でシェルスクリプトを作成します。
-/opt/an_station/support/script/exgate_nortification.shというファイルとして作成。

◆AN-ManagerStationの[監視設定]-[アクション]からアクションを登録します。
◆「実行ファイルのパス」として先ほどLinux上で作成したシェルスクリプトを設定します。
◆また「実行引数」として下記値を設定し、シェルスクリプトにアラームが発生したホストとメッセージを渡すようにします。
   $deviceHost
   $alarmMessage

◆続いて、AN-ManagerStationの[死活監視]-[テンプレート編集]から先ほど登録したアクションを「Up → Down」「Down → Up」時のアクションとして設定します。

◆以上のように、AN-ManagerStationのアラームにアクションとして、PUSH通知APIを実行するシェルスクリプトを実行する設定をすると、AN-ManagerStationの死活監視によるアラームが発生した際に、スマートデバイス(iPhone)にPUSH通知として表示されるようになります。

検証結果まとめ、課題

◆検証結果まとめ
1.EXGATEを利用することでスマートデバイス(iPhone)からシングルサインオンで
  クラウド上のAN-ManagerStationにアクセスできることを確認しました。
2.EXGATEのAPIを利用してAN-ManagerStationのアラームをスマートデバイス
  (iPhone)にPUSH通知として表示できることを確認しました。

◆所感と今後の課題
AN-ManagerStationにはメールによる通知機能があるため、PUSH通知のメリットは
それほどないと思っていましたが、通知バナーをタップからEXGATEクライアントを起動、
生体認証でシングルサインオンしてAN-ManagerStationへアクセスできる流れはスムーズで良い感じでした。
ただし、AN-ManagerStation自体はPCの比較的大きな画面で操作する前提でデザインされているため
スマートデバイスからの操作は難ありという感じでした。スマートデバイスに最適化したUIで操作・参照
できるようにすると新たなユーザ体験を提供できると考えます。

EXGATEとAN-ManagerStation連携メリット