可以通过 RESTful 终结点访问 Intune Data Warehouse 数据模型。 若要访问你的数据,客户端必须使用 OAuth 2.0 向 Microsoft Entra ID 进行授权。 若要启用访问权限,请首先在 Azure 中设置本机应用并授予 Microsoft Intune API 权限。 您的本地客户端获得授权,然后客户端可以通过本机应用程序与 Data Warehouse 端点通信。
设置客户端以从 Data Warehouse API 获取数据的步骤要求您执行以下操作:
- 在 Azure 中将客户端应用创建为本机应用
- 授予客户端应用对 Microsoft Intune API 的访问权限
- 创建本地 REST 客户端以获取数据
使用以下步骤了解如何使用 REST 客户端授权和访问 API。 首先,你将了解如何使用 Postman 使用通用 REST 客户端。 Postman 是一种常用工具,用于故障排除和开发 REST 客户端以处理 API。 有关 Postman 的详细信息,请参阅 Postman 网站。 然后,可以查看 C# 代码示例。 此示例提供了授权客户端和从 API 获取数据的示例。
在 Azure 中将客户端应用创建为本机应用
在 Azure 中创建本机应用。 此本机应用是客户端应用。 当本地客户端请求凭据时,在本地计算机上运行的客户端引用 Intune Data Warehouse API。
- 登录到 Microsoft Entra 管理中心。
- 选择“Microsoft Entra ID>应用注册”以打开“应用注册”窗格。
- 选择 “新建应用注册”。
- 键入应用详细信息。
- 键入友好名称,如“Intune Data Warehouse Client”作为名称。
- 为“支持的帐户类型”选择“仅限此组织目录中的帐户” (“仅限Microsoft - 单租户) ”。
- 键入 重定向 URI 的 URL。 重定向 URI 将取决于具体场景,但如果计划使用 Postman,请键入
https://www.getpostman.com/oauth2/callback。 在向 Microsoft Entra ID 进行身份验证时,将使用客户端身份验证步骤的回调。
- 选择“注册”。
- 记下此应用的 应用程序 (客户端) ID 。 你将在下一节中使用该 ID。
授予客户端应用对 Microsoft Intune API 的访问权限
现在,你已在 Azure 中定义了一个应用。 从本机应用授予对 Microsoft Intune API 的访问权限。
- 登录到 Microsoft Entra 管理中心。
- 选择“Microsoft Entra ID>应用注册”以打开“应用注册”窗格。
- 选择需要授予访问权限的应用。 您将应用程序命名为类似于 Intune Data Warehouse Client。
- 选择 API 权限>添加权限。
- 查找并选择 Intune API。 它命名为 Microsoft Intune API。
- 选择“委托权限”框,然后单击“从 Microsoft Intune 获取数据仓库信息”框。
- 单击“添加权限”。
- (可选)在“配置的权限”窗格中选择“ 授予 Microsoft 管理员同意 ”,然后选择“ 是”。 这将授予对当前目录中的所有帐户的访问权限。 这将阻止为租户中的每个用户显示同意对话框。 有关详细信息,请参阅将应用程序与 Microsoft Entra ID 集成。
- 选择“证书”&“机密>+ 新建客户端机密”,然后生成新机密。 确保将其复制到安全的地方,因为您将无法再次访问它。
使用 Postman 从 Microsoft Intune API 获取数据
可以通过通用 REST 客户端(如 Postman)使用 Intune Data Warehouse API。 Postman 可以提供对 API 功能和基础 OData 数据模型的见解,并解决与 API 资源的连接问题。 在本部分中,您可以找到有关为本地客户端生成 Auth2.0 令牌的信息。 客户端需要该令牌才能使用 Microsoft Entra ID 进行身份验证并访问 API 资源。
进行通话所需的信息
需要以下信息才能使用 Postman 进行 REST 调用:
| 属性 | 说明 | 示例 |
|---|---|---|
| 回调 URL | 在应用设置页面中将此设置为回调 URL。 | https://www.getpostman.com/oauth2/callback |
| 令牌名称 | 用于将凭据传递到 Azure 应用的字符串。 该过程会生成您的令牌,以便您可以调用 Data Warehouse API。 | 持有者 |
| 身份验证 URL | 这是用于身份验证的 URL。 | https://login.microsoftonline.com/common/oauth2/authorize?resource=https://api.manage.microsoft.com/ |
| 访问令牌 URL | 这是用于授予令牌的 URL。 | https://login.microsoftonline.com/common/oauth2/token |
| 客户端 ID | 在 Azure 中创建本机应用时,已创建并注意到了这一点。 | 4184c61a-e324-4f51-83d7-022b6a81b991 |
| 客户端密码 | 在 Azure 中创建本机应用时,已创建并注意到了这一点。 | Ksml3dhDJs+jfK1f8Mwc8 |
| 可选) (范围 | 可以将该字段留空。 注意:某些 SDK(例如适用于 Python 的 Microsoft 身份验证库 (MSAL) )可能需要使用 双斜杠 (//) 定义的作用域。 |
SCOPE = ['https://api.manage.microsoft.com//.default'] |
| 授权类型 | 令牌是授权代码。 | 授权代码 |
OData 终结点
您还需要终结点。 要获取 Data Warehouse 端点,您将需要自定义源 URL。 可以从 Data Warehouse 窗格获取 OData 终结点。
- 登录到 Microsoft Intune 管理中心。
- 通过选择 Data Warehouse 打开 Reports>Data warehouse 窗格。
- 复制 OData 源下的自定义源 url,用于报告服务。 它应该看起来像:
https://fef.tenant.manage.microsoft.com/ReportingService/DataWarehouseFEService?api-version=v1.0
终结点遵循以下格式: https://fef.{yourtenant}.manage.microsoft.com/ReportingService/DataWarehouseFEService/{entity}?api-version={verson-number}
例如, 日期 实体如下所示: https://fef.tenant.manage.microsoft.com/ReportingService/DataWarehouseFEService/dates?api-version=v1.0
有关详细信息,请参阅Intune Data Warehouse API 终结点。
进行 REST 调用
若要获取 Postman 的新访问令牌,必须添加 Microsoft Entra 授权 URL、添加客户端 ID 和客户端密码。 Postman 将加载授权页面,你将在其中键入凭据。
在进行调用之前,请验证是否已将回调 URL 添加到 Azure 中的应用。 回调 URL 为 https://www.getpostman.com/oauth2/callback。
添加用于请求令牌的信息
如果尚未安装 Postman,请下载它。 若要下载 Postman,请参阅 www.getpostman.com。
打开 Postman。 选择 HTTP 操作 GET。
将终结点 URL 粘贴到地址中。 它应该看起来像:
https://fef.tenant.manage.microsoft.com/ReportingService/DataWarehouseFEService/dates?api-version=v1.0选择“授权”选项卡,然后从“类型”列表中选择 OAuth 2.0。
向下滚动到 “配置新令牌 ”部分。
令牌名称的类型持有者。
选择“ 授权代码 ”作为授权类型。
添加 回调 URL。 回调 URL 为
https://www.getpostman.com/oauth2/callback。添加 身份验证 URL。 它应该看起来像:
https://login.microsoftonline.com/common/oauth2/authorize?resource=https://api.manage.microsoft.com/添加 访问令牌 URL。 它应该看起来像:
https://login.microsoftonline.com/common/oauth2/token从你在 Azure 中创建并命名为
Intune Data Warehouse Client. 它应该看起来像:88C8527B-59CB-4679-A9C8-324941748BB4添加从在 Azure 中创建的本机应用中生成的客户端密码。 它应该看起来像:
Ksml3dhDJs+jfK1f8Mwc8选择“ 获取新的访问令牌”。
在活动 AD 授权页面中键入凭据。 Postman 中的令牌列表现在包含名为
Bearer的令牌。选择“ 使用令牌”。 标头列表包含新键值 Authorization 和值
Bearer <your-authorization-token>.
使用 Postman 将呼叫发送到终结点
创建 REST 客户端 (C#) 以从 Intune Data Warehouse
以下示例包含一个简单的 REST 客户端。 该代码使用 .NET 库中的 httpClient 类。 客户端获得 Microsoft Entra ID 的凭据后,客户端将构造一个 GET REST 调用,以从 Data Warehouse API 检索日期实体。
注意
可以在 GitHub 上访问以下代码示例。 有关示例的最新更改和更新,请参阅 GitHub 存储库。
打开 Microsoft Visual Studio。
选择文件>新项目。 展开 Visual C#,然后选择“控制台应用 (.NET Framework) ”。
为项目
IntuneDataWarehouseSamples命名,浏览到要保存项目的位置,然后选择“ 确定”。右键单击解决方案资源管理器中的解决方案名称,然后选择“管理解决方案的 NuGet 包”。 选择 “浏览”,然后在搜索框中键入内容
Microsoft.Identity.Client。注意
必须使用 Microsoft 身份验证库 (MSAL) 。 有关详细信息,请参阅 更新应用程序以使用 Microsoft 身份验证库 (MSAL) 和 Microsoft 图形 API。
选择包,在“管理解决方案的包”下选择 IntuneDataWarehouseSamples 项目,然后选择 “安装”。
选择“ 我接受” 以接受 NuGet 包许可证。
Program.cs从解决方案资源管理器打开。将 Program.cs 中的代码替换为以下代码:
namespace IntuneDataWarehouseSamples { using System; using System.Net.Http; using System.Net.Http.Headers; using Microsoft.Identity.Client; class Program { static void Main(string[] args) { /** * TODO: Replace the below values with your own. * emailAddress - The email address of the user that you will authenticate as. * * password - The password for the above email address. * This is inline only for simplicity in this sample. We do not * recommend storing passwords in plaintext. * * applicationId - The application ID of the native app that was created in AAD. * * warehouseUrl - The data warehouse URL for your tenant. This can be found in * the Microsoft Intune admin center. * * collectionName - The name of the warehouse entity collection you would like to * access. */ var emailAddress = "intuneadmin@yourcompany.com"; var password = "password_of(intuneadmin@yourcompany.com)"; var applicationId = "<Application ID>"; var warehouseUrl = "https://fef.{yourinfo}.manage.microsoft.com/ReportingService/DataWarehouseFEService?api-version=v1.0"; var collectionName = "dates"; var msalContext = new AuthenticationContext("https://login.windows.net/common/oauth2/token"); AuthenticationResult authResult = msalContext.AcquireTokenAsync( resource: "https://api.manage.microsoft.com/", clientId: applicationId, userCredential: new UserPasswordCredential(emailAddress, password)).Result; var httpClient = new HttpClient(); httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", authResult.AccessToken); var uriBuilder = new UriBuilder(warehouseUrl); uriBuilder.Path += "/" + collectionName; HttpResponseMessage response = httpClient.GetAsync(uriBuilder.Uri).Result; Console.Write(response.Content.ReadAsStringAsync().Result); Console.ReadKey(); } } }更新
TODO代码示例中的 s。按 Ctrl + F5 生成并执行 Intune。处于调试模式的 DataWarehouseAPIClient 客户端。
查看控制台输出。 输出包含从 Intune 租户中的日期实体提取的 JSON 格式的数据。
后续步骤
你可以在使用 Intune Data Warehouse API 中找到有关授权、API URL 结构和 OData 终结点的详细信息。
您还可以参考 Intune Data Warehouse 数据模型来查找 API 中包含的数据实体。 有关详细信息,请参阅 Intune Data Warehouse API 数据模型。