The documentation set for this product strives to use bias-free language. For the purposes of this documentation set, bias-free is defined as language that does not imply discrimination based on age, disability, gender, racial identity, ethnic identity, sexual orientation, socioeconomic status, and intersectionality. Exceptions may be present in the documentation due to language that is hardcoded in the user interfaces of the product software, language used based on RFP documentation, or language that is used by a referenced third-party product. Learn more about how Cisco is using Inclusive Language.
This document describes how to configure and troubleshoot Identity Services Engine (ISE) 2.4 and Industrial Network Director 1.6.1-4 integration over pxGrid (Platform Exchange Grid). Cisco IND is registered with pxGrid as a publisher and publishes information on endpoint attributes to ISE for IOTASSET Dictionary.
Cisco recommends that you have basic knowledge of these topics:
Cisco Identity Service Engine
Cisco Industrial Network Director
The information in this document is based on these software and hardware versions:
1. IND registers with ISE via pxGrid version 2 on ISE pxGrid node. Corresponding logs from IND (application.log):
2019-05-22 14:31:17,770:INFO:qtp281049997-52711:PxgridPublisher:: Connect start
2019-05-22 14:31:17,770:INFO:qtp281049997-52711:PxgridPublisher:: Hostname:WIN2012-AAA IpAddress:10.62.145.130
2019-05-22 14:31:17,770:INFO:qtp281049997-52711:PxgridPublisher:: pxGrid RestBaseUrl:https://WIN2012-AAA:8910/pxgrid/ind/asset/
2019-05-22 14:31:17,770:INFO:qtp281049997-52711:PxgridController:: Send Request ServiceRegister invoked with pxGridServer(s) [ISE24-1ek.example.com]
2019-05-22 14:31:17,770:INFO:qtp281049997-52711:PxgridController:: Sending ServiceRegister request to pxGridServer ISE24-1ek.example.com
2019-05-22 14:31:17,786:INFO:qtp281049997-52711:PxgridController:: Request={"name":"com.cisco.endpoint.asset","properties":{"wsPubsubService":"com.cisco.ise.pubsub","restBaseUrl":"https://WIN2012-AAA:8910/pxgrid/ind/asset/","assetTopic":"/topic/com.cisco.endpoint.asset"}}
2019-05-22 14:31:17,911:INFO:qtp281049997-52711:PxgridController:: Response={"id":"76d4abaf-9efd-4c68-a046-79e049564902","reregisterTimeMillis":"300000"}
2019-05-22 14:31:17,911:INFO:qtp281049997-52711:PxgridController:: Send Request ServiceLookup invoked with pxGridServer(s) [ISE24-1ek.example.com]
2019-05-22 14:31:17,911:INFO:qtp281049997-52711:PxgridController:: Sending ServiceLookup request to pxGridServer ISE24-1ek.example.com
2019-05-22 14:31:17,911:INFO:qtp281049997-52711:PxgridController:: Request={"name":"com.cisco.ise.pubsub"}
2019-05-22 14:31:17,911:INFO:qtp281049997-52711:PxgridController:: Response={"services":[{"name":"com.cisco.ise.pubsub","nodeName":"ise-pubsub-ise24-1ek","properties":{"wsUrl":"wss://ISE24-1ek.example.com:8910/pxgrid/ise/pubsub"}}]}
2019-05-22 14:31:17,911:INFO:qtp281049997-52711:PxgridPublisher:: wsUrl=wss://ISE24-1ek.example.com:8910/pxgrid/ise/pubsub
2019-05-22 14:31:17,911:INFO:qtp281049997-52711:PxgridController:: Send Request AccessSecret invoked with pxGridServer(s) [ISE24-1ek.example.com]
2019-05-22 14:31:17,911:INFO:qtp281049997-52711:PxgridController:: Sending AccessSecret request to pxGridServer ISE24-1ek.example.com
2019-05-22 14:31:17,926:INFO:qtp281049997-52711:PxgridController:: Request={"peerNodeName":"ise-pubsub-ise24-1ek"}
2019-05-22 14:31:17,926:INFO:qtp281049997-52711:PxgridController:: Access Secret recieved
2019-05-22 14:31:17,926:INFO:qtp281049997-52711:PxgridPublisher:: Client created
As seen in the logs, IND has registered for the assetTopic
2. ISE PSN with pxgrid probe enabled does a bulk download of existing pxGrid Assets (profiler.log):
2019-05-22 14:39:25,817 INFO [ProfilerINDSubscriberPoller-56-thread-1][] cisco.profiler.infrastructure.probemgr.INDSubscriber -::- New services are: [Service [name=com.cisco.endpoint.asset, nodeName=ind2, properties={wsPubsubService=com.cisco.ise.pubsub, restBaseUrl=https://WIN2012-AAA:8910/pxgrid/ind/asset/, assetTopic=/topic/com.cisco.endpoint.asset}]]
2019-05-22 14:39:26,011 INFO [ProfilerINDSubscriberPoller-56-thread-1][] cisco.profiler.infrastructure.probemgr.INDSubscriber -::- NODENAME:ind2
2019-05-22 14:39:26,011 INFO [ProfilerINDSubscriberPoller-56-thread-1][] cisco.profiler.infrastructure.probemgr.INDSubscriber -::- REQUEST BODY{"offset":"0","limit":"500"}
2019-05-22 14:39:26,046 INFO [ProfilerINDSubscriberPoller-56-thread-1][] cisco.profiler.infrastructure.probemgr.INDSubscriber -::- Response status={}200
2019-05-22 14:39:26,046 INFO [ProfilerINDSubscriberPoller-56-thread-1][] cisco.profiler.infrastructure.probemgr.INDSubscriber -::- Content: "OUT_OF_SYNC"
2019-05-22 14:39:26,047 INFO [ProfilerINDSubscriberPoller-56-thread-1][] cisco.profiler.infrastructure.probemgr.INDSubscriber -::- Status is :"OUT_OF_SYNC"
2019-05-22 14:39:26,047 DEBUG [ProfilerINDSubscriberPoller-56-thread-1][] cisco.profiler.infrastructure.probemgr.INDSubscriber -::- Static set after adding new services: [Service [name=com.cisco.endpoint.asset, nodeName=ind, properties={wsPubsubService=com.cisco.ise.pubsub, restBaseUrl=https://WIN2012-AAA:8910/pxgrid/ind/asset/, assetTopic=/topic/com.cisco.endpoint.asset}], Service [name=com.cisco.endpoint.asset, nodeName=ind2, properties={wsPubsubService=com.cisco.ise.pubsub, restBaseUrl=https://WIN2012-AAA:8910/pxgrid/ind/asset/, assetTopic=/topic/com.cisco.endpoint.asset}]]
2019-05-22 14:39:26,052 INFO [ProfilerINDSubscriberBulkRequestPool-80-thread-1][] cisco.profiler.infrastructure.probemgr.INDSubscriber -::- NODENAME:ind2
2019-05-22 14:39:26,052 INFO [ProfilerINDSubscriberBulkRequestPool-80-thread-1][] cisco.profiler.infrastructure.probemgr.INDSubscriber -::- REQUEST BODY{"offset":"0","limit":"500"}
2019-05-22 14:39:26,111 INFO [ProfilerINDSubscriberBulkRequestPool-80-thread-1][] cisco.profiler.infrastructure.probemgr.INDSubscriber -::- Response status={}200
2019-05-22 14:39:26,111 INFO [ProfilerINDSubscriberBulkRequestPool-80-thread-1][] cisco.profiler.infrastructure.probemgr.INDSubscriber -::- Content: {"assets":[{"assetId":"100","assetName":"WIN2012-CHILD","assetIpAddress":"10.62.145.131","assetMacAddress":"00:50:56:b6:46:87","assetVendor":"VMware","assetProductId":"Unknown","assetSerialNumber":"","assetDeviceType":"Server","assetSwRevision":"","assetHwRevision":"","assetProtocol":"NetBIOS","assetConnectedLinks":[],"assetCustomAttributes":[{"key":"assetGroup","value":"Root"},{"key":"assetTag","value":"SEC_TAG2"}]},{"assetId":"101","assetName":"win2012.example.com","assetIpAddress":"10.62.145.72","assetMacAddress":"00:50:56:9c:3f:92","assetVendor":"VMware","assetProductId":"Unknown","assetSerialNumber":"","assetDeviceType":"Server","assetSwRevision":"","assetHwRevision":"","assetProtocol":"NetBIOS","assetConnectedLinks":[],"assetCustomAttributes":[{"key":"assetGroup","value":"Root"},{"key":"assetTag","value":""}]}]}
2019-05-22 14:39:26,111 DEBUG [ProfilerINDSubscriberBulkRequestPool-80-thread-1][] cisco.profiler.infrastructure.probemgr.INDSubscriber -::- Parsing bulk response {"assets":[{"assetId":"100","assetName":"WIN2012-CHILD","assetIpAddress":"10.62.145.131","assetMacAddress":"00:50:56:b6:46:87","assetVendor":"VMware","assetProductId":"Unknown","assetSerialNumber":"","assetDeviceType":"Server","assetSwRevision":"","assetHwRevision":"","assetProtocol":"NetBIOS","assetConnectedLinks":[],"assetCustomAttributes":[{"key":"assetGroup","value":"Root"},{"key":"assetTag","value":"SEC_TAG2"}]},{"assetId":"101","assetName":"win2012.example.com","assetIpAddress":"10.62.145.72","assetMacAddress":"00:50:56:9c:3f:92","assetVendor":"VMware","assetProductId":"Unknown","assetSerialNumber":"","assetDeviceType":"Server","assetSwRevision":"","assetHwRevision":"","assetProtocol":"NetBIOS","assetConnectedLinks":[],"assetCustomAttributes":[{"key":"assetGroup","value":"Root"},{"key":"assetTag","value":""}]}]}
3. New endpoint is discovered on IND (endpoint needs to be discovered with a protocol, otherwise endpoint is not identified as a pxGrid Asset and is not shared via pxGrid with ISE).
4. IND publishes this information to ISE pxGrid node
5. PSN via pxGrid probe receives this data (profiler.log):
2019-05-22 15:20:40,616 DEBUG [Grizzly(2)][] cisco.profiler.infrastructure.probemgr.INDSubscriber -::- Parsing push notification response: {"asset":{"assetId":"101","assetName":"win2012.example.com","assetIpAddress":"10.62.145.72","assetMacAddress":"00:50:56:9c:3f:92","assetVendor":"VMware","assetProductId":"Unknown","assetSerialNumber":"","assetDeviceType":"Server","assetSwRevision":"","assetHwRevision":"","assetProtocol":"NetBIOS","assetConnectedLinks":[],"assetCustomAttributes":[{"key":"assetGroup","value":"Root"},{"key":"assetTag","value":"SEC_TAG2"}]},"opType":"UPDATE"}
2019-05-22 15:20:40,616 DEBUG [Grizzly(2)][] cisco.profiler.infrastructure.probemgr.INDSubscriber -::- sending endpoint to forwarder{"assetId":"101","assetName":"win2012.example.com","assetIpAddress":"10.62.145.72","assetMacAddress":"00:50:56:9c:3f:92","assetVendor":"VMware","assetProductId":"Unknown","assetSerialNumber":"","assetDeviceType":"Server","assetSwRevision":"","assetHwRevision":"","assetProtocol":"NetBIOS","assetConnectedLinks":[],"assetCustomAttributes":[{"key":"assetGroup","value":"Root"},{"key":"assetTag","value":"SEC_TAG2"}]}
2019-05-22 15:20:40,617 INFO [Grizzly(2)][] cisco.profiler.infrastructure.probemgr.Forwarder -::- Forwarder Mac 00:50:56:9C:3F:92 MessageCode null epSource PXGRIDPROBE
2019-05-22 15:20:40,617 DEBUG [forwarder-2][] cisco.profiler.infrastructure.probemgr.ForwarderHelper -:ProfilerCollection:- sequencing Radius message for mac = 00:50:56:9C:3F:92
2019-05-22 15:20:40,617 DEBUG [forwarder-2][] cisco.profiler.infrastructure.probemgr.Forwarder -:ProfilerCollection:- Processing endpoint:00:50:56:9C:3F:92
2019-05-22 15:20:40,618 DEBUG [forwarder-2][] com.cisco.profiler.im.EndPoint -:ProfilerCollection:- filtered custom attributes are:{assetGroup=Root, assetTag=SEC_TAG2}
2019-05-22 15:20:40,618 DEBUG [forwarder-2][] cisco.profiler.infrastructure.probemgr.Forwarder -:ProfilerCollection:- Filtering:00:50:56:9C:3F:92
2019-05-22 15:20:40,618 DEBUG [forwarder-2][] cisco.profiler.infrastructure.probemgr.Forwarder -:ProfilerCollection:- Endpoint Attributes:EndPoint[id=<null>,name=<null>]
MAC: 00:50:56:9C:3F:92
Attribute:BYODRegistration value:Unknown
Attribute:DeviceRegistrationStatus value:NotRegistered
Attribute:EndPointProfilerServer value:ISE24-1ek.example.com
Attribute:EndPointSource value:PXGRIDPROBE
Attribute:MACAddress value:00:50:56:9C:3F:92
Attribute:NmapSubnetScanID value:0
Attribute:OUI value:VMware, Inc.
Attribute:PolicyVersion value:0
Attribute:PortalUser value:
Attribute:PostureApplicable value:Yes
Attribute:assetDeviceType value:Server
Attribute:assetGroup value:Root
Attribute:assetHwRevision value:
Attribute:assetId value:101
Attribute:assetIpAddress value:10.62.145.72
Attribute:assetMacAddress value:00:50:56:9c:3f:92
Attribute:assetName value:win2012.example.com
Attribute:assetProductId value:Unknown
Attribute:assetProtocol value:NetBIOS
Attribute:assetSerialNumber value:
Attribute:assetSwRevision value:
Attribute:assetTag value:SEC_TAG2
Attribute:assetVendor value:VMware
Attribute:b310a420-78a5-11e9-a189-9ac8f4107843 value:Root
Attribute:b8e73d50-78a5-11e9-a189-9ac8f4107843 value:SEC_TAG2
Attribute:ip value:10.62.145.72
Attribute:SkipProfiling value:false
6. Context Visibility is updated with correct data
Note: Steps 1 - 3 are required even if you wish to have just visibility of assetGroup and assetTag in Context Visibility
Navigate to Administration > Identity Management > Settings > Endpoint Custom Attributes. Configure Custom Attributes (assetGroup and assetTag) according to the image below.
Navigate to Work Centers > Profiler > Profiling Policies. Click on Add. Configure Profiler Policy similar to the image below.
Navigate to Work Centers > Profiler > Settings > Profiler Settings. Ensure checkbox is checked.
Navigate to Settings > pxGrid. Click on Download .pem IND certificate. This certificate is used during pxGrid registration, so ISE should trust it.
Navigate to Administration > Certificates > Certificate Management > Trusted Certificates. Click on Import. Click on Browse and select IND certificate from Step 3. Click Submit.
IND does not use client certificate which ISE CA issues. Instead the goal is to populate IND trusted store, so when ISE sends it's pxGrid certificate (during TLS exchange), it is trusted by IND.
Navigate to Administration > pxGrid Services > Certificates. Populate fields according to the image below. CN field is mandatory since the goal of ISE CA is to issue identity certificate. Ideally you should enter the FQDN of IND, but since identity certificate is not used by IND, CN field value is not critical.
Navigate to Settings > pxGrid > Trusted Certificates. Click on New. Enter the Name (chain will be seen with this name on IND). Password is the one from Step 1.
Navigate to Settings > Policy Servers, click on New. Enter ISE FQDN and ip address of ISE pxGrid Node.
Navigate to Settings > pxGrid and enable pxGrid integration. Click on toggle button. Enter the Node Name, this Host Name is the name of pxGrid client on ISE. Select the ISE configured earlier from the drop down menu in Server 1 field. Click on Register.
Note: Steps 11 - 12 might be ignored if Automatically approve new certificate-based accounts setting is enabled on ISE.
The following message is displayed on IND upon successful Registration:
Navigate to Administration > pxGrid Services > All Clients. Open Total Pending Approval(1) drop down menu. Click Approve All.
Navigate to Settings > pxGrid. Click on Activate.
The following message is displayed on IND upon successful Activation:
Navigate to Administration > pxGrid Services > All Clients. It is expected to see IND client as Offline (XMPP) in All Clients, IND uses pxGrid version 2.
Click on Web Clients, confirm that IND client has a status ON, and that /topic/com.cisco.endoint.asset is part of Subscriptions.
IND should transition to In Sync status. It is done if bulk download is successful on ISE, if it is not the case IND will stuck in Out of Sync state.
Transition from Out of Sync to In Sync happends if bulk download is successful on ISE. IND application.log below.
2019-05-22 22:09:06,902:INFO:qtp281049997-53444:PxgridConfigMgr:: Pxgrid Statistics Start:: Bulk Request : bulkReqAssetCount:2 add: false
2019-05-22 22:09:06,902:INFO:qtp281049997-53444:PxgridConfigMgr:: Pxgrid Statistics updated:: Bulk Request : AssetCount:2
2019-05-22 22:09:06,902:INFO:qtp281049997-53444:PxgridConfigMgr:: Sync Status transition to IN_SYNC
2019-05-22 22:09:06,918:INFO:qtp281049997-53444:PxGridServiceRestController:: getAssets Completed
It is critical for ISE to be able to resolve IND hostname which is shared by IND. Otherwise ISE can't do bulk download and IND will never transition to In Sync state. You can see the following exception in profiler.log if bulk download fails (WIN2012-AAA was not resolvable by ISE). To trigger bulk download you can uncheck and check the pxGrid probe on PSN.
2019-04-30 13:59:50,708 INFO [ProfilerINDSubscriberPoller-60-thread-1][] cisco.profiler.infrastructure.probemgr.INDSubscriber -::- New services are: []
2019-04-30 13:59:50,714 INFO [ProfilerINDSubscriberPoller-60-thread-1][] cisco.profiler.infrastructure.probemgr.INDSubscriber -::- NODENAME:ind
2019-04-30 13:59:50,714 INFO [ProfilerINDSubscriberPoller-60-thread-1][] cisco.profiler.infrastructure.probemgr.INDSubscriber -::- REQUEST BODY{"offset":"0","limit":"500"}
2019-04-30 13:59:50,716 ERROR [ProfilerINDSubscriberPoller-60-thread-1][] cisco.profiler.infrastructure.probemgr.INDSubscriber -::- Unable to get sync statusWIN2012-AAA:WIN2012-AAA
java.net.UnknownHostException: WIN2012-AAA
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:184)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:589)
at sun.security.ssl.SSLSocketImpl.connect(SSLSocketImpl.java:673)
at sun.security.ssl.BaseSSLSocketImpl.connect(BaseSSLSocketImpl.java:173)
at sun.net.NetworkClient.doConnect(NetworkClient.java:180)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:463)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:558)
at sun.net.www.protocol.https.HttpsClient.<init>(HttpsClient.java:264)
at sun.net.www.protocol.https.HttpsClient.New(HttpsClient.java:367)
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.getNewHttpClient(AbstractDelegateHttpsURLConnection.java:191)
at sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1156)
at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:1050)
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:177)
at sun.net.www.protocol.http.HttpURLConnection.getOutputStream0(HttpURLConnection.java:1334)
at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1309)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:259)
at com.cisco.profiler.infrastructure.probemgr.INDSubscriber.getRequest(INDSubscriber.java:362)
at com.cisco.profiler.infrastructure.probemgr.INDSubscriber.isInSync(INDSubscriber.java:500)
at com.cisco.profiler.infrastructure.probemgr.INDSubscriber.populateIOTServiceList(INDSubscriber.java:462)
at com.cisco.profiler.infrastructure.probemgr.INDSubscriber$WorkerThread.run(INDSubscriber.java:441)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Endpoints on IND are shared with ISE only if pxGrid Asset flag is Yes, MAC address should be also available, otherwise ISE has not enough data to create an endpoint.
If assetTag only is not available it can be the case when wrong TAG type used. You need to use Security Tag (not Regular Tag) when you update the endpoint.
If both AssetTag and AssetGroup are not available, there can be multiple reasons behind
1. Profiling policy is not configured using Custom Attributes (See Step 1-3 in Configurations part of the document)
2. Due to defect CSCvn66106 should be disabled. Otherwise it filters custom attributes from the classifier. The following log can be seen in profiler.log.
2019-05-22 11:20:11,796 DEBUG [PersistentWorker-8-18-thread-1][] com.cisco.profiler.im.EndPoint -:Profiling:- filtered custom attributes are:{assetGroup=Root, assetTag=SEC_TAG2, b310a420-78a5-11e9-a189-9ac8f4107843=Root, b8e73d50-78a5-11e9-a189-9ac8f4107843=SEC_TAG2}