キャンセル
次の結果を表示 
次の代わりに検索 
もしかして: 
cancel
560
閲覧回数
5
いいね!
0
コメント
hiryokoy
Cisco Employee
Cisco Employee

はじめに

pxGridにはversion 1.0と2.0があり、1.0はXMPP(Extensible Messaging and Presence Protocol)ベースでしたが2.0はWebsocket,RESTベースに変わり汎用のライブラリが使えるようになったためSDK不要、Java以外にもPython,Golang等でも開発可能になりました。本稿では2.0の検証環境構築例を紹介します。
ISEとWindowsVMでpxGrid検証環境の構築(以下:1.0の記事)と重複する部分は省略しますので合わせてご覧ください。
本稿でもClientはJavaを使用します。

使用環境

1.0の記事のUbuntu環境にさらにJava programのbuild toolであるmavenをinstallしてあります。
sudo apt install maven
で追加し、.bash_profileに

 export MVN_HOME="/usr/share/maven"
 export PATH="${MVN_HOME}/bin:${PATH}"

を追加します。

[20/04/24] ~$ which mvn
/usr/share/maven/bin/mvn
[20/04/24] ~$

のようにmvnにpathが通っていれば使用可能です。

Server側準備

1.0の記事の内容と変わりません。

Client側準備

1.0の記事の内容と変わりません。

pxGrid sampleとRadiusSimulator.jarを使用した検証

RadiusSimulator.jarは1.0の記事で使用したものを使用します。

ファイルの説明

2.0ではSDKの代わりにJavaのsample codeを入手します。
https://github.com/cisco-pxgrid/pxgrid-rest-wsからClone or downloadで

2020-04-29-22-19-43.png

Download ZIPをクリックするとzipファイルを入手できます。zip内pxgrid-rest-ws-master/java directoryの中を適当なdirectoryにcopyしておきます。
「適当」なdirectoryの構成は

[20/04/29] v2$ ls -al
total 128
drwxrwxrwx 1 hiyoko hiyoko    512 Apr 29 22:23 .
drwxrwxrwx 1 hiyoko hiyoko    512 Mar 29 20:13 ..
-rwxr--r-- 1 hiyoko hiyoko     43 Mar 24 23:56 .gitignore
-rwxr--r-- 1 hiyoko hiyoko    679 Mar 24 23:56 README.md
-rwxr--r-- 1 hiyoko hiyoko 101981 Apr 29 22:23 RadiusSimulator.jar
-rwxr--r-- 1 hiyoko hiyoko   2202 Mar 24 23:56 pom.xml
-rw-rw-rw- 1 hiyoko hiyoko   4344 Apr 29 22:23 root.jks
drwxr-xr-x 1 hiyoko hiyoko    512 Apr  5 12:04 src
drwxrwxrwx 1 hiyoko hiyoko    512 Apr  5 13:19 target
-rw-rw-rw- 1 hiyoko hiyoko   6862 Apr 29 22:23 win10man_isegiz_pxgrid.jks
[20/04/29] v2$

のようになります。RadiusSimulator.jar, root.jks, win10man_isegiz_pxgrid.jksは1.0の記事で使用したものをcopyしています。

検証例

sample codeは

[20/04/30] v2$ ls -al src/main/java/com/cisco/pxgrid/samples/ise/
total 80
drwxr-xr-x 1 hiyoko hiyoko   512 Apr  5 12:04 ./
drwxr-xr-x 1 hiyoko hiyoko   512 Apr  5 12:04 ../
-rwxr--r-- 1 hiyoko hiyoko  4031 Mar 24 23:56 CustomServiceConsumer.java*
-rwxr--r-- 1 hiyoko hiyoko  4703 Mar 24 23:56 CustomServiceProvider.java*
-rwxr--r-- 1 hiyoko hiyoko  6520 Mar 24 23:56 PxgridControl.java*
-rwxr--r-- 1 hiyoko hiyoko  4840 Mar 24 23:56 SampleConfiguration.java*
-rwxr--r-- 1 hiyoko hiyoko  3701 Mar 24 23:56 SampleHelper.java*
-rwxr--r-- 1 hiyoko hiyoko 13328 Mar 24 23:56 Session.java*
-rwxr--r-- 1 hiyoko hiyoko  4043 Mar 24 23:56 SessionQueryAll.java*
-rwxr--r-- 1 hiyoko hiyoko  2048 Mar 24 23:56 SessionQueryByIP.java*
-rwxr--r-- 1 hiyoko hiyoko  3544 Mar 24 23:56 SessionSubscribe.java*
-rwxr--r-- 1 hiyoko hiyoko  5013 Mar 24 23:56 StompFrame.java*
-rwxr--r-- 1 hiyoko hiyoko  4957 Mar 24 23:56 StompPubsubClientEndpoint.java*
-rwxr--r-- 1 hiyoko hiyoko   888 Mar 24 23:56 StompSubscription.java*
drwxr-xr-x 1 hiyoko hiyoko   512 Apr  5 12:04 model/
[20/05/01] v2$

のようになっており、上のjavaファイルの拡張子以外の部分が実行コマンドで使われます。

実行コマンドは
mvn exec:java -Dexec.mainClass= "com.cisco.pxgrid.samples.ise.<sample code nameから拡張子を除いたもの>"
-Dexec.args= "-a <ISEのIP/FQDN"> -u -k <identity keystore JKSファイル名> -p <keystoreのpassphrase> -t <truststre JKSファイル名> -q <truststoreのpassphrase>"

今回は例としてSessionSubscribeを使用します。

[20/05/01] v2$ mvn exec:java -Dexec.mainClass="com.cisco.pxgrid.samples.ise.SessionSubscribe" -Dexec.args="-a 1.150.0.196 -u pxgridv2clientwin10man -k ./win10man_
isegiz_pxgrid.jks -p Cisco123 -t ./root.jks -q Cisco123"
Picked up _JAVA_OPTIONS: -Dfile.encoding=UTF-8
[INFO] Scanning for projects...
[INFO]
[INFO] --------------< com.cisco.pxgrid:pxgrid-rest-ws-samples >---------------
[INFO] Building pxgrid-rest-ws-samples 2.0.0-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- exec-maven-plugin:1.6.0:java (default-cli) @ pxgrid-rest-ws-samples ---
------ config ------
  hostname = 1.150.0.196
  nodename = pxgridv2clientwin10man
  password = (not specified)
  description = (not specified)
  keystorefilename = ./win10man_isegiz_pxgrid.jks
  keystorepassword = Cisco123
  truststorefilename = ./root.jks
  truststorepassword = Cisco123
--------------------
11:56:38.574 [com.cisco.pxgrid.samples.ise.SessionSubscribe.main()] INFO com.cisco.pxgrid.samples.ise.PxgridControl - AccountActivate request={}
11:56:39.859 [com.cisco.pxgrid.samples.ise.SessionSubscribe.main()] INFO com.cisco.pxgrid.samples.ise.PxgridControl - AccountActivate response={"accountState":"PENDING","version":"2.0.1.7"}
11:57:39.860 [com.cisco.pxgrid.samples.ise.SessionSubscribe.main()] INFO com.cisco.pxgrid.samples.ise.PxgridControl - AccountActivate request={}
11:57:39.890 [com.cisco.pxgrid.samples.ise.SessionSubscribe.main()] INFO com.cisco.pxgrid.samples.ise.PxgridControl - AccountActivate response={"accountState":"ENABLED","version":"2.0.1.7"}
11:57:39.890 [com.cisco.pxgrid.samples.ise.SessionSubscribe.main()] INFO com.cisco.pxgrid.samples.ise.SessionSubscribe - pxGrid controller version=2.0.1.7
11:57:40.039 [com.cisco.pxgrid.samples.ise.SessionSubscribe.main()] INFO com.cisco.pxgrid.samples.ise.PxgridControl - ServiceLookup request={"name":"com.cisco.ise.session"}
11:57:40.083 [com.cisco.pxgrid.samples.ise.SessionSubscribe.main()] INFO com.cisco.pxgrid.samples.ise.PxgridControl - ServiceLookup response={"services":[{"name":"com.cisco.ise.session","nodeName":"ise-mnt-isegiz","properties":{"sessionTopic":"/topic/com.cisco.ise.session","groupTopic":"/topic/com.cisco.ise.session.group","wsPubsubService":"com.cisco.ise.pubsub","restBaseURL":"https://isegiz.hiyokocisco.com:8910/pxgrid/mnt/sd","restBaseUrl":"https://isegiz.hiyokocisco.com:8910/pxgrid/mnt/sd"}},{"name":"com.cisco.ise.session","nodeName":"ise-mnt-ise24b","properties":{"sessionTopic":"/topic/com.cisco.ise.session","groupTopic":"/topic/com.cisco.ise.session.group","wsPubsubService":"com.cisco.ise.pubsub","restBaseURL":"https://ise24b.hiyokocisco.com:8910/pxgrid/mnt/sd","restBaseUrl":"https://ise24b.hiyokocisco.com:8910/pxgrid/mnt/sd"}}]}
11:57:40.083 [com.cisco.pxgrid.samples.ise.SessionSubscribe.main()] INFO com.cisco.pxgrid.samples.ise.SessionSubscribe - wsPubsubServiceName=com.cisco.ise.pubsub sessionTopic=/topic/com.cisco.ise.session
11:57:40.084 [com.cisco.pxgrid.samples.ise.SessionSubscribe.main()] INFO com.cisco.pxgrid.samples.ise.PxgridControl - ServiceLookup request={"name":"com.cisco.ise.pubsub"}
11:57:40.111 [com.cisco.pxgrid.samples.ise.SessionSubscribe.main()] INFO com.cisco.pxgrid.samples.ise.PxgridControl - ServiceLookup response={"services":[{"name":"com.cisco.ise.pubsub","nodeName":"ise-pubsub-isegiz","properties":{"wsUrl":"wss://isegiz.hiyokocisco.com:8910/pxgrid/ise/pubsub"}}]}
11:57:40.111 [com.cisco.pxgrid.samples.ise.SessionSubscribe.main()] INFO com.cisco.pxgrid.samples.ise.SessionSubscribe - wsUrl=wss://isegiz.hiyokocisco.com:8910/pxgrid/ise/pubsub
11:57:40.155 [com.cisco.pxgrid.samples.ise.SessionSubscribe.main()] INFO com.cisco.pxgrid.samples.ise.PxgridControl - AccessSecret request={"peerNodeName":"ise-pubsub-isegiz"}
11:57:40.194 [com.cisco.pxgrid.samples.ise.SessionSubscribe.main()] INFO com.cisco.pxgrid.samples.ise.PxgridControl - AccessSecret response={"secret":"vosL7bDsjOPs8j82"}
11:57:41.877 [Grizzly(1)] INFO com.cisco.pxgrid.samples.ise.StompPubsubClientEndpoint - WS onOpen
11:57:41.926 [com.cisco.pxgrid.samples.ise.SessionSubscribe.main()] INFO com.cisco.pxgrid.samples.ise.StompPubsubClientEndpoint - STOMP CONNECT host=isegiz.hiyokocisco.com
11:57:42.029 [com.cisco.pxgrid.samples.ise.SessionSubscribe.main()] INFO com.cisco.pxgrid.samples.ise.StompPubsubClientEndpoint - STOMP SUBSCRIBE topic=/topic/com.cisco.ise.session
11:57:42.052 [Grizzly(2)] INFO com.cisco.pxgrid.samples.ise.StompPubsubClientEndpoint - STOMP CONNECTED version=1.2
press <enter> to disconnect...

<待ち受け中>

12:00:10.567 [Grizzly(1)] INFO com.cisco.pxgrid.samples.ise.SessionSubscribe - Content={"sessions":[{"timestamp":"2020-04-30T21:00:57.391+09:00","state":"STARTED","userName":"user01","callingStationId":"00:11:22:33:44:55","auditSessionId":"1001","ipAddresses":["200.200.200.200"],"macAddress":"00:11:22:33:44:55","nasIpAddress":"1.150.0.185","endpointProfile":"Unknown","adNormalizedUser":"user01","providers":["None"],"endpointCheckResult":"none","identitySourcePortStart":0,"identitySourcePortEnd":0,"identitySourcePortFirst":0,"networkDeviceProfileName":"Cisco","mdmRegistered":false,"mdmCompliant":false,"mdmDiskEncrypted":false,"mdmJailBroken":false,"mdmPinLocked":false}]}
<RadiusSimulator.jarでAccounting Startを送信>


12:00:33.046 [Grizzly(2)] INFO com.cisco.pxgrid.samples.ise.SessionSubscribe - Content={"sessions":[{"timestamp":"2020-04-30T21:01:24.147+09:00","state":"DISCONNECTED","userName":"user01","callingStationId":"00:11:22:33:44:55","auditSessionId":"1001","ipAddresses":["200.200.200.200"],"macAddress":"00:11:22:33:44:55","nasIpAddress":"1.150.0.185","endpointProfile":"Unknown","adNormalizedUser":"user01","providers":["None"],"endpointCheckResult":"none","identitySourcePortStart":0,"identitySourcePortEnd":0,"identitySourcePortFirst":0,"networkDeviceProfileName":"Cisco","mdmRegistered":false,"mdmCompliant":false,"mdmDiskEncrypted":false,"mdmJailBroken":false,"mdmPinLocked":false}]}
<RadiusSimulator.jarでAccounting Stopを送信>

<snip>

12:24:25.466 [com.cisco.pxgrid.samples.ise.SessionSubscribe.main()] INFO com.cisco.pxgrid.samples.ise.StompPubsubClientEndpoint - STOMP DISCONNECT receipt=ID-123
12:24:25.471 [Grizzly(2)] INFO com.cisco.pxgrid.samples.ise.StompPubsubClientEndpoint - STOMP RECEIPT id=ID-123
12:24:28.495 [com.cisco.pxgrid.samples.ise.SessionSubscribe.main()] INFO com.cisco.pxgrid.samples.ise.StompPubsubClientEndpoint - WS onClose closeReason code=NORMAL_CLOSURE phrase=
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  28:10 min
[INFO] Finished at: 2020-04-30T12:24:28Z
[INFO] ------------------------------------------------------------------------
[20/05/01] v2$

上記はpxGrid 2.0のSession subscriberを起動し、別terminalから作成したRadiusSimulator.jarによるsessionがRADIUS Accounting Start/Stopを受信した時のsession情報をpxGrid経由で受信したものになります。

2.0でも初接続時は

11:56:39.859 [com.cisco.pxgrid.samples.ise.SessionSubscribe.main()] INFO com.cisco.pxgrid.samples.ise.PxgridControl - AccountActivate response={"accountState":"PENDING","version":"2.0.1.7"}
11:57:39.860 [com.cisco.pxgrid.samples.ise.SessionSubscribe.main()] INFO com.cisco.pxgrid.samples.ise.PxgridControl - AccountActivate request={}

となった場合、ISE側でのApproveが必要になります。また、

2020-05-01-17-28-46.png

2.0でもClientがAll Clientsタブに表示されますが、StatusはOfflineになります。これは、2.0はWeb Clientsタブに改めて表示されるためで、

2020-05-01-17-09-35.png

こちらはStatus:Onになっていることが確認できます。

1.0/2.0共にpxGrid連携での切り分けやISEでどのようなログを取得できるか簡単な確認に利用できます。

参考資料

Testing and Configuration Guide for Cisco Platform Exchange Grid (pxGrid) 2.0

Cisco Platform Exchange Grid (pxGrid) 2.0

Getting Started

検索バーにキーワード、フレーズ、または質問を入力し、お探しのものを見つけましょう

シスコ コミュニティをいち早く使いこなしていただけるよう役立つリンクをまとめました。みなさんのジャーニーがより良いものとなるようお手伝いします