快速入门:列出敏感度标签 (C++)

本快速入门介绍如何使用 MIP 文件 SDK 列出为组织配置的敏感度标签。

先决条件

如果尚未完成,请确保先完成以下先决条件,然后再继续:

添加逻辑以列出敏感度标签

使用文件引擎对象添加逻辑以列出组织的敏感度标签。

  1. 打开你在前文“快速入门:客户端应用程序初始化 (C++)”中创建的 Visual Studio 解决方案。

  2. 在解决方案资源管理器中,打开项目中包含方法实现main()的.cpp文件。 该文件默认与包含它的项目同名,该名称在项目创建期间指定。

  3. 在文件顶部附近的 using 之后添加以下 using mip::FileEngine; 指令:

    using std::endl;
    
  4. 在 main() 主体末尾、最后一个 } 块的闭合大括号 catch 之后,并在 return 0; 之前(即你在上一个快速入门中结束的地方),插入以下代码:

    // List sensitivity labels
    cout << "\nSensitivity labels for your organization:\n";
    auto labels = engine->ListSensitivityLabels();
    for (const auto& label : labels)
    {
       cout << label->GetName() << " : " << label->GetId() << endl;
    
       for (const auto& child : label->GetChildren())
       {
         cout << "->  " << child->GetName() << " : " << child->GetId() << endl;
       }
    }
    system("pause");
    

创建 PowerShell 脚本以生成访问令牌

使用以下 PowerShell 脚本生成访问令牌,这是 SDK 在 AuthDelegateImpl::AcquireOAuth2Token 实现中请求的。 该脚本使用您之前安装的 MSAL.PS 模块中的 Get-MsalToken cmdlet(在“MIP SDK 安装和配置”中)。

  1. 创建 PowerShell 脚本文件(.ps1 扩展名),并将以下脚本复制并粘贴到文件中:

    • 稍后在下文部分更新 $authority 和 $resourceUrl。
    • 更新$appId和$redirectUri,使其与您在 Microsoft Entra 应用注册中指定的值一致。
    $authority = '<authority-url>'                   # Specified when SDK calls AcquireOAuth2Token()
    $resourceUrl = '<resource-url>'                  # Specified when SDK calls AcquireOAuth2Token()
    $appId = '0edbblll-8773-44de-b87c-b8c6276d41eb'  # App ID of the Microsoft Entra app registration
    $redirectUri = 'bltest://authorize'              # Redirect URI of the Microsoft Entra app registration
    $scope = $resourceUrl + "/.default"
    $response = Get-MsalToken -ClientId $appId -Authority $authority -RedirectUri $redirectUri -Scopes $scope -Interactive
    $response.AccessToken | clip                     # Copy the access token text to the clipboard
    
  2. 保存脚本文件,以便稍后在客户端应用程序请求它时运行它。

生成并测试应用

生成并测试客户端应用程序。

  1. 使用 F6(生成解决方案)生成客户端应用程序。 如果没有生成错误,请使用 F5(开始调试)来运行应用程序。

  2. 如果项目生成并成功运行,则每次 SDK 调用 AcquireOAuth2Token() 方法时,应用程序都会提示输入访问令牌。 如果应用程序多次提示并请求的值相同,则可以重复使用以前生成的令牌。

  3. 若要为提示生成访问令牌,请返回到 PowerShell 脚本并:

    • 更新 $authority 和 $resourceUrl 变量。 它们必须与步骤 2 中控制台输出中指定的值匹配。 MIP SDK 在 challenge 参数 AcquireOAuth2Token()中提供这些值。

    • 运行 PowerShell 脚本。 该 Get-MsalToken cmdlet 触发Microsoft Entra身份验证提示,类似于以下示例。 在步骤 2 的控制台输出中指定相同的帐户。 成功登录后,cmdlet 会将访问令牌放置在剪贴板上。

      Visual Studio获取令牌登录提示。

    • 你可能还需要同意允许应用程序在登录帐户下运行时访问 MIP API。 如果未预先同意 Microsoft Entra 应用程序注册(如“MIP SDK 安装和配置”中所述),或者使用来自不同租户的帐户(注册应用程序的帐户除外),则会发生这种情况。 选择 “接受” 以记录同意。

      Visual Studio同意提示。

  4. 将访问令牌粘贴到步骤 2 中的提示后,控制台输出应显示敏感度标签,类似于以下示例:

    Non-Business : 87ba5c36-17cf-14793-bbc2-bd5b3a9f95cz
    Public : 83867195-f2b8-2ac2-b0b6-6bb73cb33afz
    General : f42a3342-8706-4288-bd31-ebb85995028z
    Confidential : 074e457c-5848-4542-9a6f-34a182080e7z
    Highly Confidential : f55c2dea-db0f-47cd-8520-a52e1590fb6z
    
    Press any key to continue . . .
    

    注释

    复制并保存一个或多个敏感度标签的 ID(例如 f42a3342-8706-4288-bd31-ebb85995028z),因为你将在下一个快速入门中使用它。

故障排除

C++ 应用程序执行期间的问题

摘要 错误消息 解决方案
访问令牌不正确 发生异常... 访问令牌是否不正确/已过期?

失败的 API 调用:profile_add_engine_async 失败,详细信息为:[class mip::PolicySyncException] 获取策略失败,请求失败,HTTP 状态代码:401,x-ms-diagnostics:[2000001;reason="无法解析随请求提交的 OAuth 令牌。";error_category="invalid_token"],correlationId:[aaaa0000-bb11-2222-33cc-444444dddddd]'

C:\VSProjects\MipDev\Quickstarts\AppInitialization\x64\Debug\AppInitialization.exe(进程 29924)已退出,代码为 0。

按任意键关闭此窗口。 . .
如果项目成功构建,但你看到与左侧类似的输出,则你在 AcquireOAuth2Token() 方法中使用的令牌很可能无效或已过期。 返回到创建 PowerShell 脚本以生成访问令牌并重新生成访问令牌,再次更新 AcquireOAuth2Token(),然后重新生成/重新测试。 还可以使用 jwt.ms 单页 Web 应用程序检查和验证令牌及其声明。
未配置敏感度标签 n/a 如果项目成功生成,但控制台窗口中未显示任何输出,请确保正确配置组织的敏感度标签。 有关详细信息,请参阅“定义标签分类和保护设置”下的 MIP SDK 设置和配置。

后续步骤

了解如何列出组织的敏感度标签后,请尝试下一快速入门: