使用 REST 客户端从 Intune 数据仓库 API 获取数据

可以通过 RESTful 终结点访问Intune Data Warehouse数据模型。 若要访问数据,客户端必须使用 OAuth 2.0 Microsoft Entra ID授权。 若要启用访问权限,请先在 Azure 中设置本机应用,并向 Microsoft Intune API 授予权限。 本地客户端获得授权,然后客户端可以通过本机应用与Data Warehouse终结点通信。

设置客户端以从Data Warehouse API 获取数据的步骤要求:

  1. 在 Azure 中将客户端应用创建为本机应用
  2. 向客户端应用授予对 Microsoft Intune API 的访问权限
  3. 创建本地 REST 客户端以获取数据

使用以下步骤了解如何使用 REST 客户端授权和访问 API。 首先,你将了解如何使用 Postman 使用通用 REST 客户端。 Postman 是一种常用的工具,用于排查和开发 REST 客户端以使用 API。 有关 Postman 的详细信息,请参阅 Postman 站点。 然后,可以查看 C# 代码示例。 此示例提供了一个示例,用于授权客户端并从 API 获取数据。

在 Azure 中将客户端应用创建为本机应用

在 Azure 中创建本机应用。 此本机应用是客户端应用。 在本地客户端请求凭据时,在本地计算机上运行的客户端引用 Intune Data Warehouse API。

  1. 登录到 Microsoft Entra 管理中心
  2. 选择>Microsoft Entra ID应用注册”以打开“应用注册”窗格。
  3. 选择“ 新建应用注册”。
  4. 键入应用详细信息。
    1. 键入友好名称,例如“Intune Data Warehouse客户端”作为名称
    2. 对于支持的帐户类型,请选择“仅此组织目录中的帐户 (Microsoft - 单租户) ”。
    3. 键入 重定向 URI 的 URL。 重定向 URI 将取决于特定方案,但如果计划使用 Postman,请键入 https://www.getpostman.com/oauth2/callback。 对 Microsoft Entra ID 进行身份验证时,将使用客户端身份验证步骤的回调。
  5. 选择“注册”。
  6. 请注意此 应用的应用程序 (客户端) ID 。 下一部分将使用 ID。

向客户端应用授予对 Microsoft Intune API 的访问权限

现在已在 Azure 中定义了一个应用。 向本机应用授予对 Microsoft Intune API 的访问权限。

  1. 登录到 Microsoft Entra 管理中心
  2. 选择>Microsoft Entra ID应用注册”以打开“应用注册”窗格。
  3. 选择需要授予访问权限的应用。 你为应用命名了Intune Data Warehouse客户端
  4. 选择“ API 权限>”“添加权限”。
  5. 查找并选择Intune API。 它Microsoft Intune API 命名。
  6. 选择“委托的权限”框,然后单击“从Microsoft Intune获取数据仓库信息”框。
  7. 单击“添加权限”。
  8. (可选)在“配置的权限”窗格中 选择“授予Microsoft管理员同意 ”,然后选择“ ”。 这将授予对当前目录中所有帐户的访问权限。 这将阻止租户中的每个用户显示同意对话框。 有关详细信息,请参阅将应用程序与Microsoft Entra ID集成
  9. 选择“ 证书 & 机密>+新建客户端密码 ”并生成新机密。 请确保将其复制到安全的位置,因为您将无法再次访问它。

使用 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 终结点。

  1. 登录到 Microsoft Intune 管理中心
  2. 通过选择“报表>数据仓库”打开“Data Warehouse”窗格。
  3. 复制 报表服务的 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

添加用于请求令牌的信息

  1. 下载 Postman(如果尚未安装)。 若要下载 Postman,请参阅 www.getpostman.com

  2. 打开 Postman。 选择 HTTP 操作 GET

  3. 将终结点 URL 粘贴到地址中。 它应如下所示:

    https://fef.tenant.manage.microsoft.com/ReportingService/DataWarehouseFEService/dates?api-version=v1.0

  4. 选择“授权”选项卡,然后从“类型”列表中选择“OAuth 2.0”。

  5. 向下滚动到 “配置新令牌 ”部分。

  6. 键入“持有者”作为 “令牌名称”。

  7. 选择“ 授权代码 ”作为“授予类型”。

  8. 添加 回调 URL。 回调 URL 为 https://www.getpostman.com/oauth2/callback

  9. 添加 身份验证 URL。 它应如下所示:

    https://login.microsoftonline.com/common/oauth2/authorize?resource=https://api.manage.microsoft.com/

  10. 添加 访问令牌 URL。 它应如下所示:

    https://login.microsoftonline.com/common/oauth2/token

  11. 从在 Azure 中创建并命名Intune Data Warehouse Client为 的本机应用添加客户端 ID。 它应如下所示:

    88C8527B-59CB-4679-A9C8-324941748BB4

  12. 在 Azure 中创建的本机应用中添加从生成的 客户端密码 。 它应如下所示:

    Ksml3dhDJs+jfK1f8Mwc8

  13. 选择“ 获取新的访问令牌”。

    访问令牌的信息。

  14. 在“活动 AD 授权”页中键入凭据。 Postman 中的标记列表现在包含名为 的 Bearer令牌。

  15. 选择“ 使用令牌”。 标头列表包含 Authorization 的新键值和值 Bearer <your-authorization-token>

使用 Postman 将调用发送到终结点

  1. 选择“发送”。

  2. 返回数据显示在 Postman 响应正文中。

    Postman 客户端状态等于 200 正常。

(C#) 创建 REST 客户端,从Intune Data Warehouse

以下示例包含一个简单的 REST 客户端。 代码使用 .NET 库中的 httpClient 类。 客户端获取Microsoft Entra ID凭据后,客户端将构造 GET REST 调用,以从 Data Warehouse API 检索日期实体。

注意

可以在 GitHub 上访问以下代码示例。 有关示例的最新更改和更新,请参阅 GitHub 存储库。

  1. Microsoft Visual Studio 打开

  2. 选择 “文件>新建项目”。 展开“Visual C#”,然后选择“控制台应用” (.NET Framework)

  3. 将项目 IntuneDataWarehouseSamples命名为 ,浏览到要保存项目的位置,然后选择“ 确定”。

  4. 右键单击解决方案资源管理器中的解决方案名称,然后选择“管理解决方案的 NuGet 包”。 选择“ 浏览”,然后在 Microsoft.Identity.Client 搜索框中键入。

    注意

    必须使用 Microsoft 身份验证库 (MSAL) 。 有关详细信息,请参阅 更新应用程序以使用 Microsoft 身份验证库 (MSAL) 和 Microsoft Graph API

  5. 选择包,在“管理解决方案的包”下选择 “IntuneDataWarehouseSamples ”项目,然后选择“ 安装”。

  6. 选择“ 我接受” 以接受 NuGet 包许可证。

  7. 从解决方案资源管理器打开Program.cs

    Visual Studio 中的Program.cs和解决方案资源管理器。

  8. 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();
    }
    }
    }
    
  9. TODO更新代码示例中的 。

  10. Ctrl + F5 生成并执行Intune。调试模式下的 DataWarehouseAPIClient 客户端。

    以 JSON 格式检索的日期实体。

  11. 查看控制台输出。 输出包含从Intune租户中的日期实体拉取的 JSON 格式的数据。

后续步骤

可以在使用 Intune Data Warehouse API 中找到有关授权、API URL 结构和 OData 终结点的详细信息。

还可以参考Intune Data Warehouse数据模型来查找 API 中包含的数据实体。 有关详细信息,请参阅 Intune Data Warehouse API 数据模型