本文档介绍使用JAMF PRO实例10.48.X实施身份服务引擎v3.3的必要步骤。
思科建议了解以下主题:
本文档中的信息基于以下软件和版本:
本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您的网络处于活动状态,请确保您了解所有命令的潜在影响。
思科ISE支持JAMF作为MDM服务器,用于管理Windows计算机。当这些计算机(由JAMF管理)连接并经过身份验证时,ISE从JAMF服务器检索合规性信息,以检索这些设备安全状态的进一步信息。
根据ISE中配置的标准和条件,它使用信息来实施安全访问安全,从而允许/拒绝这些计算机。因此,此实施有助于识别可能被攻击者利用的潜在漏洞和安全弱点。
步骤1.使用具有管理员权限的帐户登录您的JAMF云,网址为:https://YOUR_ACCOUNT.jamfcloud.com/index.html。
JAMF PRO登录页
步骤2从主菜单中,选择齿轮图标。
JAMF PRO控制面板
步骤3在主菜单上,选择System > Useraccounts and groups。
JAMF PRO系统设置
步骤4.选择选项Password Policy。
JAMF PRO用户帐户和组
第5步。在此部分,确认除了承载令牌身份验证外,您还有选项Allow Basic Authentication。
注意:从JAMF PRO v10.35开始,API的基本身份验证默认未启用。因此,您必须启用这些功能以确保MDM集成正常工作。
有关详细信息,请参阅传统API身份验证更改。
步骤6。启用最后一个功能后,请转至步骤3中描述的Menu Settings,然后查找Network IntegrationMenu,然后选择它。
JAMF PRO网络集成
第7步继续选择+ New为ISE 3.3添加新实例。
JAMF PRO网络集成设置
第8步。在Network Access Management Service下的下拉菜单中,保留标记为Cisco ISE的选项。
配置示例与ISE的网络集成
步骤9.该集成会生成以下格式的网络集成URL:https://YOUR_ACCOUNT.jamfcloud.com/networkIntegrationEndpoint/ID. 保存此URL,因为您必须以后使用它来连接ISE。
步骤1.选择菜单>管理>网络资源>外部MDM,然后单击Add。
ISE MDM集成菜单
步骤2.在MDM/UEM集成名称段内命名安装。
ISE MDM JAMF PRO配置示例
步骤3向下滚动并继续执行测试连接。如果连接成功,则显示此图像。如果您没有收到相同的输出,请参阅本文档中的故障排除部分。
成功连接到MDM JAMF帐户
步骤4在之前的选项中选择OK。在页面底部,找到Device Identifier,其中ISE关联终端会话。
MDM服务器的其他配置
数据包捕获:如果连接成功,您可以查看从ISE PAN服务器发送到JAMF PRO实例的HTTPS流量:
数据包捕获与JAMF实例连接的示例
登录ISE:ISE相应地处理和分析数据,如ise-psc.log所示:
DEBUG [admin-http-pool16][[]] cisco.cpm.mdm.api.MdmServerInfoApi -:::::- inside the method : callMdmServerInfoApiOnMdmServer()
TRACE [admin-http-pool16][[]] cisco.cpm.mdm.apiimpl.MDMVerifyServer -:::::- Inside MDMVerifyServer.verify, connectToServer is called
DEBUG [admin-http-pool16][[]] cisco.cpm.mdm.apiimpl.MDMVerifyServer -:::::- apiVersionSb : 3, mdmApiVersionSb : , tryWithV3 : false
DEBUG [admin-http-pool16][[]] cisco.cpm.mdm.apiimpl.MDMVerifyServer -:::::- MDM Rest API Server Query String -> /ciscoise/mdminfo/?ise_api_version=3
DEBUG [admin-http-pool16][[]] cisco.cpm.mdm.apiimpl.MDMVerifyServer -:::::- MDM Rest API Server Query PATH String -> /ciscoise/mdminfo/?ise_api_version=3
DEBUG [admin-http-pool16][[]] cisco.cpm.mdm.apiimpl.MDMVerifyServer -:::::- 1. Connecting to the MDM server host YOUR_ACCOUNTusing apiVersion 3
DEBUG [admin-http-pool16][[]] cisco.cpm.mdm.util.MdmRESTClient -:::::- sendGETRequestDom: start HTTP request - connectionsUsed: 1, connectionsAvailable: 199
DEBUG [admin-http-pool16][[]] cisco.cpm.mdm.util.MdmRESTClient -:::::- sendGETRequestDomNonComp: start HTTP request - connectionsUsed: 0, connectionsAvailable: 200
DEBUG [admin-http-pool16][[]] cisco.cpm.mdm.util.MdmRESTClient -:::::- ===mdmFlowInfo===null,=====serverType=====MobileDeviceManager,===serverAuthType===Basic
DEBUG [admin-http-pool16][[]] cisco.cpm.mdm.util.MdmRESTClient -:::::- QueryType is heartbeatQuery
DEBUG [admin-http-pool16][[]] cisco.cpm.mdm.util.MdmRESTClient -:::::- using httpClient for http query - [parameters={http.route.default-proxy=http://PROXY_IP:PORT, http.socket.timeout=30000, http.connection.timeout=5000}]
INFO [admin-http-pool16][[]] cisco.cpm.mdm.util.MdmRESTClient -:::::- GET: MDM Server URL: https://YOUR_ACCOUNT:443//networkIntegrationEndpoint/ID/ciscoise/mdminfo/?ise_api_version=3
DEBUG [admin-http-pool16][[]] cisco.cpm.mdm.util.MdmRESTClient -:::::- Proxy Config in request = [,PROXY_IP,PORT,nullnull2fpwHJhtoIMf+jKzFKazgg==%/ZFdElAGn4odZaRIZxeiZQ==]
.
.
INFO [admin-http-pool16][[]] cisco.cpm.mdm.util.MdmRESTClient -:::::- MDM Server Response Code: 200
TRACE [admin-http-pool16][[]] cisco.cpm.mdm.util.MdmRESTClient -:::::-
Response data received from the MDM server : <?xml version="1.0" encoding="UTF-8"?><ise_api><name>mdminfo</name><api_version>3</api_version><api_path>/networkIntegrationEndpoint/ID/ciscoise/v3</api_path><redirect_url>https://YOUR_ACCOUNT.jamfcloud.com/enroll</redirect_url><query_max_size>1000</query_max_size><messaging_support>true</messaging_support><vendor>JAMF Software</vendor><product_name>JSS</product_name><product_version>10.48.1-t1689600654</product_version></ise_api>
DEBUG [admin-http-pool16][[]] cisco.cpm.mdm.util.MdmRESTClient -:::::- sendGETRequestDom: end HTTP request - connectionsUsed: 1, connectionsAvailable: 199
DEBUG [admin-http-pool16][[]] cisco.cpm.mdm.util.MdmRESTClient -:::::- sendGETRequestDomNonComp: end HTTP request - connectionsUsed: 0, connectionsAvailable: 200
TRACE [admin-http-pool16][[]] cisco.cpm.mdm.apiimpl.MDMVerifyServer -:::::- isMdmSettingsIdNotNull flag Value : false,tryWithV3 : false, isMdmSettingsUpdateRequired : false
DEBUG [admin-http-pool16][[]] cisco.cpm.mdm.api.MdmServerInfoApi -:::::- returning from the method : callMdmServerInfoApiOnMdmServer() -> com.cisco.cpm.mdm.api.MdmServerInfoData Object {
apiPath: /ID/ciscoise/v3
redirectUrl: https://YOUR_ACCOUNT.jamfcloud.com/enroll
queryMaxSize: 1000
apiVersion: 3
vendor: JAMF Software
productName: JSS
productVersion: 10.48.1-t1689600654
COMMA: ,
errorMsg: null
errorOccurred: false
}
此集成的基础包括ISE定期对JAMF-PRO实例执行的查询。执行故障排除的参考点(在此实例中)是主管理节点(PAN)。 PAN节点是连接方法配置为到达MDM服务器的地方。此相同的方法会在实施的所有节点中复制。
后续步骤可用于排除连通性故障。
步骤1.在PAN节点上启用TRACE级别的组件external-mdm。
TRACE级别中的外部MDM组件进行故障排除
步骤2.从PAN节点设置捕获并保存配置。
收集MDM连接信息的数据包捕获示例
步骤3.浏览外部MDM菜单。从步骤2运行捕获,然后选择按钮测试连接。等待错误出现。
步骤4.从步骤2停止捕获。查看对应的ise-psc.log日志以分析行为。
在这种情况下,当您在ISE中测试与JAMF的连接时收到此错误时:
MDM错误连接超时
与外部MDM相关的日志显示以下信息:
TRACE [admin-http-pool26][[]] cisco.cpm.mdm.apiimpl.MDMVerifyServer -:::::- Inside MDMVerifyServer.verify, connectToServer is called
DEBUG [admin-http-pool26][[]] cisco.cpm.mdm.apiimpl.MDMVerifyServer -:::::- API version retrieved from MDM server : 3
DEBUG [admin-http-pool26][[]] cisco.cpm.mdm.apiimpl.MDMVerifyServer -:::::- apiVersionSb : 3, mdmApiVersionSb : 3, tryWithV3 : false
DEBUG [admin-http-pool26][[]] cisco.cpm.mdm.apiimpl.MDMVerifyServer -:::::- MDM Rest API Server Query String -> /ciscoise/mdminfo/?ise_api_version=3
DEBUG [admin-http-pool26][[]] cisco.cpm.mdm.apiimpl.MDMVerifyServer -:::::- MDM Rest API Server Query PATH String -> /ciscoise/mdminfo/?ise_api_version=3
DEBUG [admin-http-pool26][[]] cisco.cpm.mdm.apiimpl.MDMVerifyServer -:::::- 1. Connecting to the MDM server host YOUR_ACCOUNT.jamfcloud.com using apiVersion 3
DEBUG [admin-http-pool26][[]] cisco.cpm.mdm.util.MdmRESTClient -:::::- sendGETRequestDom: start HTTP request - connectionsUsed: 0, connectionsAvailable: 200
DEBUG [admin-http-pool26][[]] cisco.cpm.mdm.util.MdmRESTClient -:::::- sendGETRequestDomNonComp: start HTTP request - connectionsUsed: 0, connectionsAvailable: 200
DEBUG [admin-http-pool26][[]] cisco.cpm.mdm.util.MdmRESTClient -:::::- ===mdmFlowInfo===null,=====serverType=====MobileDeviceManager,===serverAuthType===Basic
DEBUG [admin-http-pool26][[]] cisco.cpm.mdm.util.MdmRESTClient -:::::- QueryType is heartbeatQuery
DEBUG [admin-http-pool26][[]] cisco.cpm.mdm.util.MdmRESTClient -:::::- using httpClient for http query - [parameters={http.socket.timeout=30000, http.connection.timeout=5000}]
INFO [admin-http-pool26][[]] cisco.cpm.mdm.util.MdmRESTClient -:::::- GET: MDM Server URL: https://YOUR_ACCOUNT:443//networkIntegrationEndpoint/ID/ciscoise/mdminfo/?ise_api_version=3
INFO [Timer-12][[]] cisco.mnt.common.utility.AlarmMessageDiskQueue -:::::- Inside dequeue
INFO [Timer-12][[]] cisco.mnt.common.utility.AlarmMessageDiskQueue -:::::- root exists
INFO [Timer-12][[]] cisco.mnt.common.utility.AlarmMessageDiskQueue -:::::- alarm.1692086243915 deleted true
INFO [admin-http-pool26][[]] cisco.cpm.mdm.util.MdmServersCache -:::::- MDM server - Status : Active, mdm server id : ID and mdm server name : JAMF_PRO
ERROR [admin-http-pool26][[]] cisco.cpm.mdm.util.MdmRESTClient -:::::- Error message while connecting to MDM server :
Connection Failed to the MDM server host – YOUR_ACCOUNT.jamfcloud.com, and port - 443 : Connection timeout occurred. Check if the MDM server is reachable : SocketTimeoutException message = connect timed out
DEBUG [admin-http-pool26][[]] cisco.cpm.mdm.util.MdmRESTClient -:::::- sendGETRequestDom: end HTTP request - connectionsUsed: 0, connectionsAvailable: 200
DEBUG [admin-http-pool26][[]] cisco.cpm.mdm.util.MdmRESTClient -:::::- sendGETRequestDomNonComp: end HTTP request - connectionsUsed: 0, connectionsAvailable: 200
ERROR [admin-http-pool26][[]] cisco.cpm.mdm.apiimpl.MDMVerifyServer -:::::- Exception occurred while connecting to the MDM server A connection timeout occurred. Check if the MDM server is reachable.
ERROR [admin-http-pool26][[]] cisco.cpm.mdm.api.MdmClient -:::::- A connection timeout occurred. Check if the MDM server is reachable.
DEBUG [admin-http-pool26][[]] cisco.cpm.mdm.api.MdmServerInfoApi -:::::- returning from the method : callMdmServerInfoApiOnMdmServer() -> com.cisco.cpm.mdm.api.MdmServerInfoData Object {
apiPath: null
redirectUrl: null
queryMaxSize: null
apiVersion: null
vendor: null
productName: null
productVersion: null
COMMA: ,
errorMsg: null
errorOccurred: true
}
在数据包捕获中,查看以下信息:
DNS流量 — 如果您在集成的设置部分输入主机名,则ISE会对JAMF相关实例执行查询。如果您没有看到主机名的解析结果,请尝试使用IP地址。此选项可用于配置,而不是主机名。
MDM流中的DNS流量
MDM连接端口中的重新传输 — 如果直接查询IP地址(在DNS查询或MDM设置中提供),则可能会看到重复的SYN数据包。这表示没有到JAMF实例的直接路由,也没有外部设备干扰443端口上的通信。
连接到MDM超时示例
此事件表示您已连接到在设置MDM服务器时配置的JAMF帐户。但是,您指明要连接的实例不存在或包含错误,因为找不到该实例。
MDM error 404示例
系统将显示与此事件对应的日志:
DEBUG [admin-http-pool32][[]] cisco.cpm.mdm.api.MdmServerInfoApi -:::::- inside the method : callMdmServerInfoApiOnMdmServer()
TRACE [admin-http-pool32][[]] cisco.cpm.mdm.apiimpl.MDMVerifyServer -:::::- Inside MDMVerifyServer.verify, connectToServer is called
DEBUG [admin-http-pool32][[]] cisco.cpm.mdm.apiimpl.MDMVerifyServer -:::::- API version retrieved from MDM server : 3
DEBUG [admin-http-pool32][[]] cisco.cpm.mdm.apiimpl.MDMVerifyServer -:::::- apiVersionSb : 3, mdmApiVersionSb : 3, tryWithV3 : false
DEBUG [admin-http-pool32][[]] cisco.cpm.mdm.apiimpl.MDMVerifyServer -:::::- MDM Rest API Server Query String -> /ciscoise/mdminfo/?ise_api_version=3
DEBUG [admin-http-pool32][[]] cisco.cpm.mdm.apiimpl.MDMVerifyServer -:::::- MDM Rest API Server Query PATH String -> /ciscoise/mdminfo/?ise_api_version=3
DEBUG [admin-http-pool32][[]] cisco.cpm.mdm.apiimpl.MDMVerifyServer -:::::- 1. Connecting to the MDM server host YOUR_ACCOUNT.jamfcloud.com using apiVersion 3
DEBUG [admin-http-pool32][[]] cisco.cpm.mdm.util.MdmRESTClient -:::::- sendGETRequestDom: start HTTP request - connectionsUsed: 1, connectionsAvailable: 199
DEBUG [admin-http-pool32][[]] cisco.cpm.mdm.util.MdmRESTClient -:::::- sendGETRequestDomNonComp: start HTTP request - connectionsUsed: 0, connectionsAvailable: 200
DEBUG [admin-http-pool32][[]] cisco.cpm.mdm.util.MdmRESTClient -:::::- ===mdmFlowInfo===null,=====serverType=====MobileDeviceManager,===serverAuthType===Basic
DEBUG [admin-http-pool32][[]] cisco.cpm.mdm.util.MdmRESTClient -:::::- QueryType is heartbeatQuery
DEBUG [admin-http-pool32][[]] cisco.cpm.mdm.util.MdmRESTClient -:::::- using httpClient for http query - [parameters={http.route.default-proxy=http://PROXY_IP:PROXY_PORT, http.socket.timeout=30000, http.connection.timeout=5000}]
INFO [admin-http-pool32][[]] cisco.cpm.mdm.util.MdmRESTClient -:::::- GET: MDM Server URL: https://YOUR_ACCOUNT.jamfcloud.com:443//networkIntegrationEndpoint/1/ewe/ciscoise/mdminfo/?ise_api_version=3
DEBUG [admin-http-pool32][[]] cisco.cpm.mdm.util.MdmRESTClient -:::::- Proxy Config in request = [,PROXY_IP,PROXY_PORT,nullnullglhhcSIWnCC7y8FvGQvm/Q==%fZ4PXgBMdoIDfbwdgIhSeA==]
INFO [admin-http-pool37][[]] cpm.admin.infra.spring.ISEAdminControllerUtils -::admin:::- mapping path found in global-forwards, forwarding to: /pages/jsonResponse.jsp
INFO [admin-http-pool37][[]] cpm.admin.infra.spring.ISEAdminControllerUtils -::admin:::- mapping path found in global-forwards, forwarding to: /pages/jsonResponse.jsp
INFO [admin-http-pool32][[]] cisco.cpm.mdm.util.MdmServersCache -:::::- MDM server - Status : Active, mdm server id : ID and mdm server name : JAMF_PRO
ERROR [admin-http-pool32][[]] cisco.cpm.mdm.util.MdmRESTClient -:::::- Error message while connecting to MDM server : Failed to connect to MDM Server JAMF_PRO : 404
DEBUG [admin-http-pool32][[]] cisco.cpm.mdm.util.MdmRESTClient -:::::- sendGETRequestDom: end HTTP request - connectionsUsed: 1, connectionsAvailable: 199
DEBUG [admin-http-pool32][[]] cisco.cpm.mdm.util.MdmRESTClient -:::::- sendGETRequestDomNonComp: end HTTP request - connectionsUsed: 0, connectionsAvailable: 200
ERROR [admin-http-pool32][[]] cisco.cpm.mdm.apiimpl.MDMVerifyServer -:::::- Exception occurred while connecting to the MDM server Connection Failed: 404:: the MDM server is not reachable
ERROR [admin-http-pool32][[]] cisco.cpm.mdm.api.MdmClient -:::::- Connection Failed: 404:: the MDM server is not reachable
DEBUG [admin-http-pool32][[]] cisco.cpm.mdm.api.MdmServerInfoApi -:::::- returning from the method : callMdmServerInfoApiOnMdmServer() -> com.cisco.cpm.mdm.api.MdmServerInfoData Object {
apiPath: null
redirectUrl: null
queryMaxSize: null
apiVersion: null
vendor: null
productName: null
productVersion: null
COMMA: ,
errorMsg: null
errorOccurred: true
}
DEBUG [admin-http-pool32][[]] cisco.cpm.mdm.util.MdmServersCache -:::::- mdm Guid: GUID is found in cache and status is: false
此时的数据包捕获提供一个HTTPS连接,其中包含正在JAMF站点和ISE服务器之间传输的应用数据。
错误404 MDM涉及的数据包
连接中的此错误表示您在MDM设置中部署要集成的用户出现问题。
验证用户:
MDM连接错误代码401
ISE上的日志指示此行为:
INFO [admin-http-pool8][[]] cisco.cpm.mdm.util.MdmRESTClient -:::::- GET: MDM Server URL: https://YOUR_ACCOUNT.jamfcloud.com:443/networkIntegrationEndpoint/1/79fu/ciscoise/mdminfo/?ise_api_version=3
DEBUG [admin-http-pool8][[]] cisco.cpm.mdm.util.MdmRESTClient -:::::- Proxy Config in request = [,PROXY_PORT,PROXY_PORT,nullnull2fpwHJhtoIMf+jKzFKazgg==%/ZFdElAGn4odZaRIZxeiZQ==]
ERROR [admin-http-pool8][[]] cisco.cpm.mdm.util.MdmRESTClient -:::::- Error message while connecting to MDM server : Failed to connect to MDM Server YOUR_ACCOUNT.jamfcloud.com : 401
DEBUG [admin-http-pool8][[]] cisco.cpm.mdm.util.MdmRESTClient -:::::- sendGETRequestDom: end HTTP request - connectionsUsed: 4, connectionsAvailable: 196
DEBUG [admin-http-pool8][[]] cisco.cpm.mdm.util.MdmRESTClient -:::::- sendGETRequestDomNonComp: end HTTP request - connectionsUsed: 0, connectionsAvailable: 200
DEBUG [admin-http-pool8][[]] cisco.cpm.mdm.apiimpl.MDMVerifyServer -:::::- retry connecting using api v2 after 5 seconds.
DEBUG [admin-http-pool8][[]] cisco.cpm.mdm.apiimpl.MDMVerifyServer -:::::- MDM Rest API Server Query String -> /ciscoise/mdminfo/?ise_api_version=2
DEBUG [admin-http-pool8][[]] cisco.cpm.mdm.apiimpl.MDMVerifyServer -:::::- MDM Rest API Server Query PATH String -> /ciscoise/mdminfo/?ise_api_version=2
DEBUG [admin-http-pool8][[]] cisco.cpm.mdm.apiimpl.MDMVerifyServer -:::::- 2. On Error : re-connecting to the MDM server host YOUR_ACCOUNT.jamfcloud.com using api version-2
DEBUG [admin-http-pool8][[]] cisco.cpm.mdm.util.MdmRESTClient -:::::- sendGETRequestDom: start HTTP request - connectionsUsed: 4, connectionsAvailable: 196
DEBUG [admin-http-pool8][[]] cisco.cpm.mdm.util.MdmRESTClient -:::::- sendGETRequestDomNonComp: start HTTP request - connectionsUsed: 0, connectionsAvailable: 200
DEBUG [admin-http-pool8][[]] cisco.cpm.mdm.util.MdmRESTClient -:::::- ===mdmFlowInfo===null,=====serverType=====MobileDeviceManager,===serverAuthType===Basic
DEBUG [admin-http-pool8][[]] cisco.cpm.mdm.util.MdmRESTClient -:::::- QueryType is heartbeatQuery
DEBUG [admin-http-pool8][[]] cisco.cpm.mdm.util.MdmRESTClient -:::::- using httpClient for http query - [parameters={http.route.default-proxy=http://PROXY_IP:PROXY_PORT, http.socket.timeout=30000, http.connection.timeout=5000}]
INFO [admin-http-pool8][[]] cisco.cpm.mdm.util.MdmRESTClient -:::::- GET: MDM Server URL: https://YOUR_ACCOUNT.jamfcloud.com:443/networkIntegrationEndpoint/1/79fu/ciscoise/mdminfo/?ise_api_version=2
DEBUG [admin-http-pool8][[]] cisco.cpm.mdm.util.MdmRESTClient -:::::- Proxy Config in request = [,PROXY_IP,PROXY_PORT,nullnull2fpwHJhtoIMf+jKzFKazgg==%/ZFdElAGn4odZaRIZxeiZQ==]
ERROR [admin-http-pool8][[]] cisco.cpm.mdm.util.MdmRESTClient -:::::- Error message while connecting to MDM server : Failed to connect to MDM Server YOUR_ACCOUNT.jamfcloud.com : 401
DEBUG [admin-http-pool8][[]] cisco.cpm.mdm.util.MdmRESTClient -:::::- sendGETRequestDom: end HTTP request - connectionsUsed: 4, connectionsAvailable: 196
DEBUG [admin-http-pool8][[]] cisco.cpm.mdm.util.MdmRESTClient -:::::- sendGETRequestDomNonComp: end HTTP request - connectionsUsed: 0, connectionsAvailable: 200
DEBUG [admin-http-pool8][[]] cisco.cpm.mdm.apiimpl.MDMVerifyServer -:::::- retry connecting using api v1 after 5 seconds.
数据包捕获显示了类似行为,如下图所示:
错误中涉及的MDM数据包401
| 版本 | 发布日期 | 备注 |
|---|---|---|
2.0 |
16-Jun-2026
|
更新的拼写、间距、语法、句子结构、简介、替换文本、更新的URL、标题等。 |
1.0 |
18-Aug-2023
|
初始版本 |