目录

简介

先决条件

要求

使用的组件

背景信息

配置

网络图

配置Microsoft Intune

将证书从Intune门户导入到ISE受信任库

在Azure门户中将ISE部署为应用程序

将ISE证书导入Azure中的应用程序

验证与故障排除

基于sun.security.validator.ValidatorException的“Connection to the server failed”

无法从Azure AD获取身份验证令牌

无法从Azure AD获取身份验证令牌

相关信息

简介

本文档介绍如何将Intune移动设备管理(MDM)与思科身份服务引擎(ISE)集成。

先决条件

要求

Cisco 建议您了解以下主题：

- 思科ISE中的MDM服务知识

- 了解Microsoft Azure Intune服务

使用的组件

本文档中的信息基于以下软件和硬件版本：

- 思科身份服务引擎3.0

- Microsoft Azure Intune应用程序

本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始（默认）配置。如果您的网络处于活动状态，请确保您了解所有命令的潜在影响。

背景信息

MDM服务器可保护、监控、管理和支持跨移动运营商、服务提供商和企业部署的移动设备。这些服务器充当策略服务器，控制部署环境中移动设备上的某些应用（例如电子邮件应用）的使用。但是，网络是唯一能够根据访问控制列表(ACL)提供对终端的精细访问的实体。ISE查询MDM服务器以获取必要的设备属性，以便创建为这些设备提供网络访问控制的ACL。思科ISE与Microsoft Intune MDM服务器集成，以便在设备尝试访问本地资源时帮助组织保护企业数据。

配置

网络图

配置Microsoft Intune

将证书从Intune门户导入到ISE受信任库

登录到Intune管理控制台或Azure管理控制台，无论哪个网站有你的租户。使用浏览器获取证书详细信息：

步骤1:从Web浏览器打开Microsoft Azure portal。

第二步：单击浏览器工具栏中的锁定符号，然后单击 View Certificates.

第三步：在“证书”窗口中，单击选Certification Path  项卡。示例如下所示：

第四步：查找Baltimore Cyber Trust root, 哪个是通常的根CA。但是，如果存在任何其他不同的根CA，请点击该根CA证书。在该根CA证书的Details选项卡上，可以将其复制到文件并将其另存为BASE64证书。

第五步：在ISE中，导航到Administration > System > Certificates > Trusted Certificates, 并导入刚才保存的根证书。为证书指定一个有意义的名称， Azure MDM例如。对中间CA证书也重复此过程。

在Azure门户中将ISE部署为应用程序

步骤1:导航至Azure Active Directory，然后选择 App registrations.

第二步：在App registrations, 中，使用ISE名称创建新应用注册。单击Create，如下图所示。

第三步：选择Settings，以编辑应用程序并添加所需的组件。

第四步：在Settings, 下，选择所需的权限，并应用以下选项：

1. Microsoft图形

- 应用程序权限

- 读取目录数据

- 授权的权限

- 阅读Microsoft Intune设备配置和策略

- 阅读Microsoft Intune配置

- 登录用户

- 随时访问用户数据

2. Microsoft Intune API

- 应用程序权限

- 从Microsoft Intune获取设备状态和合规性信息

3. Windows Azure Active Directory

- 应用程序权限

- 读取目录数据

- 授权的权限

- 读取目录数据

- 登录并读取用户配置文件

配置结果类似于下图所示：

第五步：单击Grant Permissions，确认所有应用程序权限。此过程需要5-10分钟才能生效。编辑创建的应用的文件以导入内部ISE CA证书Azure Manifest。

将ISE证书导入Azure中的应用程序

步骤1:下载应用的清单文件。

注：它是一个扩展名为JSON的文件。请勿编辑文件名或扩展名，否则会失败。

第二步：从所有节点导出ISE系统证书。在PAN上，导航至Administration > System > Certificates > System Certificates, 选择Default self-signed server certificate，然后点击Export.。选Export Certificate Only择（默认），然后选择要保存的位置。从证书中删除BEGIN和END标记，并将其余文本作为一行进行复制。这适用于旧版选项部分所述的2020年6月之前的版本。

截至2020年6月，门户允许您直接上传证书。

传统选项：

步骤1:运行PowerShell过程以将证书转换为BASE64并正确将其导入Azure JSON清单文件。从Windows使用Windows PowerShell或Windows PowerShell ISE应用程序。使用下列命令：

$cer = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2 $cer.Import(“mycer.cer”) $bin = $cer.GetRawCertData() $base64Value = [System.Convert]::ToBase64String($bin) $bin = $cer.GetCertHash() $base64Thumbprint = [System.Convert]::ToBase64String($bin) $keyid = [System.Guid]::NewGuid().ToString()

第二步：保留、和 $base64Thumbprint, $base64Value的 $keyid值，这些值将在下一步中使用。所有这些值都将添加到JSON字段keyCredentials中，因为默认情况下如下所示：

为此，请确保按以下顺序使用值：

"keyCredentials": [   {   “customKeyIdentifier“: “$base64Thumbprint_from_powerShell_for_PPAN”,   “keyId“: “$keyid_from_above_PPAN“,   "type": "AsymmetricX509Cert",   "usage": "Verify",   "value": "Base64 Encoded String of ISE PPAN cert"   },   {   “customKeyIdentifier“: “$base64Thumbprint_from_powerShell_for_SPAN”,   “keyId“: “$keyid_from_above_SPAN“,   "type": "AsymmetricX509Cert",   "usage": "Verify",   "value": "Base64 Encoded String of ISE SPAN cert"   } ],

第三步：将已编辑的JSON文件上传到Azure门户，以便从ISE上使用的证书中验证keyCredentials。

其外观必须类似于：

第四步：请注意，上传后，Microsoft端会执行此操 value  作，不允许在第一次上传后看到这些值，因此下面显示的字段 keyCredentials   null 为。

可以在ISE中复制和添加MDM服务器所需的 Microsoft Azure AD Graph API Endpoint  值 OAUTH 2.0 Token Endpoint。

必须在ISE GUI中输入这些值。导航到Administration > Network Resources > External MDM   并添加新服务器：

ISE

Intune

自动发现网址

终端> Microsoft Azure AD Graph API终端

客户端ID

{Registered-App-Name} >应用ID

令牌颁发URL

终端> OAuth 2.0令牌终端

配置完成后，状态显示为enabled。

验证与故障排除

基于sun.security.validator.ValidatorException的“Connection to the server failed”

步骤1:在TRACE级别使用以下日志收集支持捆绑包：

- portal (guest.log)

- mdmportal (ise-psc.log)

- external-mdm (ise-psc.log)

第二步：检查 ise-psc.log 以下日志：

- 2016-10-17 12:45:52,158 DEBUG [admin-http-pool9300][] cisco.cpm.mdm.authtoken.MdmAzureActiveDirectoryClient -::::- ClientId - a46a6fd7-4a31-4471-9078-59cb2bb6a5ab, Token issuance endpoint - https://login

- microsoftonline.com/273106dc-2878-42eb-b7c8-069dcf334687/oauth2/token, ResourceId/App Id uri - https://graph.windows.net

- 2016-10-17 12:45:52,329 DEBUG [admin-http-pool9300][] cisco.cpm.mdm.authtoken.MdmCertAndKeyUtil -::::- Certificate Friendly Name -USMEM-AM01-ISE.Sncorp.smith-nephew.com#USMEM-AM01-ISE.Sncorp.smith-nephew.c

- om#00003

- 2016-10-17 12:45:52,354 DEBUG [admin-http-pool9300][] cisco.cpm.mdm.authtoken.MdmCertAndKeyUtil -::::- Result of command invocation

- 2016-10-17 12:45:52,363 DEBUG [admin-http-pool9300][] cisco.cpm.mdm.authtoken.MdmCertAndKeyUtil -::::- Result of command invocation

- 2016-10-17 12:45:52,364 DEBUG [admin-http-pool9300][] cisco.cpm.mdm.authtoken.MdmCertAndKeyUtil -::::- Successfuly decrypted private key

- 2016-10-17 12:45:52,794 ERROR [admin-http-pool9300][] cisco.cpm.mdm.authtoken.MdmAzureActiveDirectoryClient -::::- There is a problem with the Azure certificates or ISE trust store. sun.security.validator

- .ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

- 2016-10-17 12:45:52,794 ERROR [admin-http-pool9300][] cisco.cpm.mdm.authtoken.MdmAzureActiveDirectoryClient -::::- Unable to acquire access token from Azure

- java.util.concurrent.ExecutionException: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException

- : unable to find valid certification path to requested target

这表示需要导入此页graph.microsoft.com  上的证书。

第三步：点击图标locker并检查证书详细信息。

第四步：将其保存为BASE64格式的文件，并将其导入ISE受信任存储。确保导入完整的证书链。之后，再次测试与MDM服务器的连接。

无法从Azure AD获取身份验证令牌

通常，当清单文件包含错JSON 误的ISE证书链时会发生此错误。在将清单文件上载到Azure之前，请验证是否至少存在此配置：

"keyCredentials": [ { “customKeyIdentifier“: “$base64Thumbprint_from_powerShell_for_PPAN”, “keyId“: “$keyid_from_above_PPAN“, "type": "AsymmetricX509Cert", "usage": "Verify", "value": "Base64 Encoded String of ISE PPAN cert" }, { “customKeyIdentifier“: “$base64Thumbprint_from_powerShell_for_SPAN”, “keyId“: “$keyid_from_above_SPAN“, "type": "AsymmetricX509Cert", "usage": "Verify", "value": "Base64 Encoded String of ISE SPAN cert" } } ],

上一个示例基于存在PAN和SAN的场景。再次从PowerShell运行脚本并导入正确的BASE64值。尝试上载清单文件，并且不能遇到任何错误。

$cer = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2 $cer.Import(“mycer.cer”) $bin = $cer.GetRawCertData() $base64Value = [System.Convert]::ToBase64String($bin) $bin = $cer.GetCertHash() $base64Thumbprint = [System.Convert]::ToBase64String($bin) $keyid = [System.Guid]::NewGuid().ToString()

请记住按照配置 $base64Thumbprint, $base64Value  部 $keyid  分中的步骤应用和的值。

无法从Azure AD获取身份验证令牌

通常，当中没有为Azure应用授予正确的权限时，会发生此错 portal.azure.com误。验证你的应用具有正确的属性，并确保每次更改后Grant Permissions，都单击。

当ISE尝试访问令牌颁发URL并返回ISE未返回的证书时，会出现此消息。确保完整的CA链在ISE信任库中。如果在ISE的受信任存储中安装正确的证书后问题仍然存在，请执行数据包捕获并测试连接，以便查看发送的内容。

相关信息

- 使用客户端凭证的服务到服务呼叫

- Azure — 身份验证与授权

- Azure - Quickstart：向Microsoft身份平台注册应用程序

- Azure Active Directory应用清单

- 技术支持和文档 - Cisco Systems