Intune Data Warehouse仅限应用程序的身份验证
可以使用 Microsoft Entra ID 设置应用程序,并向Intune Data Warehouse进行身份验证。 此过程对于应用程序不应有权访问用户凭据的网站、应用和后台进程非常有用。 使用以下步骤,使用 OAuth 2.0 Microsoft Entra ID授权应用程序。
Authorization
Microsoft Entra ID使用 OAuth 2.0 授权访问Microsoft Entra租户中的 Web 应用程序和 Web API。 本指南介绍如何使用 C# 对应用程序进行身份验证。 OAuth 2.0 规范的第 4.1 节介绍了 OAuth 2.0 授权代码流。 有关详细信息,请参阅使用 OAuth 2.0 授权访问 Web 应用程序和Microsoft Entra ID。
Azure KeyVault
以下进程使用专用方法来处理和转换应用密钥。 此专用方法已命名为 SecureString。 作为替代方法,可以使用 Azure KeyVault 来存储应用密钥。 有关详细信息,请参阅 密钥保管库。
创建 Web 应用
在本部分中,提供有关要指向Intune的 Web 应用的详细信息。 Web 应用是客户端-服务器应用程序。 服务器提供 Web 应用,其中包括 UI、内容和功能。 此类应用在 Web 上单独维护。 使用Intune向 Web 应用授予对Intune的访问权限。 数据流由 Web 应用启动。
选择“所有服务>M365 Microsoft Entra ID>Microsoft Entra ID>应用注册”。
单击“ 新建注册 ”以显示“ 注册应用程序 ”窗格。
在 “注册应用程序 ”窗格中,添加应用详细信息:
- 应用名称,例如Intune App-Only身份验证。
- 支持的帐户类型。
- 应用程序的 重定向 URI 。 这是用户在身份验证过程中自动导航到的位置。 他们必须证明自己是他们所说的那样。 有关详细信息,请参阅什么是Microsoft Entra ID的应用程序访问和单一登录?
单击“注册”。
注意
从应用窗格中复制 应用程序 (客户端) ID ,以便稍后使用。
创建密钥 (密码)
在本部分中,Microsoft Entra ID为应用生成键值。
在“应用注册”窗格中,选择新创建的应用以显示应用窗格。
选择窗格顶部附近的“ 证书 & 机密 ”以显示“ 证书 & 机密 ”窗格。
在“证书 & 机密”窗格中选择“客户端机密”。
添加密钥 说明 和密钥 的过期 持续时间。
单击“ 添加 ”以保存和更新应用程序的密钥。
必须复制生成的密钥值 (base64 编码) 。
注意
离开 “证书 & 机密 ”窗格后,密钥值将消失。 稍后无法从此窗格中检索密钥。 复制它以供稍后使用。
授予应用程序权限
在本部分中,向应用程序授予权限。
- 选择“API 权限>”“添加权限>Intune>”应用权限”。
- 选择get_data_warehouse选项 (从Microsoft Intune) 获取数据仓库信息。
- 单击“添加权限”。
- 在“添加 API 访问”窗格中单击“完成”。
- 在“API 权限”窗格中单击“授予管理员同意”,并在升级后单击“是”以更新此应用程序已有的任何现有权限。
生成令牌
使用 Visual Studio 创建一个控制台应用 (.NET Framework) 项目,该项目支持.NET Framework并使用 C# 作为编码语言。
选择“ 文件>新建>项目 ”以显示“ 新建项目 ”对话框。
在左侧,选择“Visual C#”以显示所有.NET Framework项目。
选择“控制台应用 (.NET Framework) ”,添加应用名称,然后单击“确定”创建应用。
在“解决方案资源管理器”中,选择“Program.cs”以显示代码。
在 解决方案资源管理器 中添加对程序集
System.Configuration
的引用。在弹出菜单中,选择“ 添加新>项”。 将显示“ 添加新项 ”对话框。
在左侧的 “Visual C#”下,选择“ 代码”。
选择“ 类”,将类的名称更改为 “IntuneDataWarehouseClass.cs”,然后单击“ 添加”。
在 方法中添加
Main
以下代码:var applicationId = ConfigurationManager.AppSettings["appId"].ToString(); SecureString applicationSecret = ConvertToSecureStr(ConfigurationManager.AppSettings["appKey"].ToString()); // Load as SecureString from configuration file or secret store (i.e. Azure KeyVault) var tenantDomain = ConfigurationManager.AppSettings["tenantDomain"].ToString(); var msalContext = new AuthenticationContext($"https://login.windows.net/" + tenantDomain + "/oauth2/token"); AuthenticationResult authResult = msalContext.AcquireTokenAsync( resource: "https://api.manage.microsoft.com/", clientCredential: new ClientCredential( applicationId, new SecureClientSecret(applicationSecret))).Result;
通过在代码文件顶部添加以下代码来添加其他命名空间:
using System.Security; using Microsoft.Identity.Client; using System.Configuration;
注意
必须使用 Microsoft 身份验证库 (MSAL) 。 有关详细信息,请参阅 更新应用程序以使用 Microsoft 身份验证库 (MSAL) 和 Microsoft Graph API。
在
Main
方法之后,添加以下私有方法来处理和转换应用密钥:private static SecureString ConvertToSecureStr(string appkey) { if (appkey == null) throw new ArgumentNullException("AppKey must not be null."); var secureAppKey = new SecureString(); foreach (char c in appkey) secureAppKey.AppendChar(c); secureAppKey.MakeReadOnly(); return secureAppKey; }
在解决方案资源管理器中,右键单击“引用”,然后选择“管理 NuGet 包”。
搜索 Microsoft.Identity.Client 并安装相关的 Microsoft NuGet 包。
在解决方案资源管理器选择并打开 App.config 文件。
appSettings
添加 节,使 xml 如下所示:<?xml version="1.0" encoding="utf-8" ?> <configuration> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" /> </startup> <appSettings> <add key="appId" value="App ID created from 'Create a Web App' procedure"/> <add key="appKey" value="Key created from 'Create a key' procedure" /> <add key="tenantDomain" value="contoso.onmicrosoft.com"/> </appSettings> </configuration>
appId
更新 、appKey
和tenantDomain
值,以匹配与应用相关的唯一值。生成应用。
注意
若要查看其他实现代码,请参阅 Intune-Data-Warehouse 代码示例。
后续步骤
查看什么是 Azure 密钥保管库,详细了解 Azure 密钥保管库?