本快速入門說明如何使用 MIP 保護 SDK 來保護使用者可用的範本。
先決條件
如果您尚未完成,請務必先完成下列必要條件,再繼續進行:
- 完成 快速入門 - 用戶端應用程式初始化 - 保護 SDK (C++),以建立入門的 Visual Studio 解決方案。 本「清單保護範本」快速入門依賴於前一個快速入門,以便正確創建入門解決方案。
- 選擇性:檢閱 RMS 範本 概念。
新增邏輯以列出保護範本
使用保護引擎物件,新增邏輯以列出使用者可用的保護範本。
開啟您在先前的「快速入門 - 用戶端應用程式初始化 - 保護 SDK (C++)》 文章中建立的 Visual Studio 解決方案。
使用 方案總管,在您的項目中開啟包含 方法實作
main()的 .cpp 檔案。 預設名稱為包含它的專案的同一名稱,而這是在您建立專案時指定的。在
using mip::ProtectionEngine;之後,在文件接近開頭處新增下列using指令:using std::endl;在
main()本文結尾,最後catch一個區塊的右大括弧}下方、return 0;(即您在上一個快速入門中離開的位置)上方,插入下列程式碼:// List protection templates const shared_ptr<ProtectionEngineObserver> engineObserver = std::make_shared<ProtectionEngineObserver>(); // Create a context to pass to 'ProtectionEngine::GetTemplateListAsync'. That context will be forwarded to the // corresponding ProtectionEngine::Observer methods. In this case, we use promises/futures as a simple way to detect // the async operation completes synchronously. auto loadPromise = std::make_shared<std::promise<vector<shared_ptr<mip::TemplateDescriptor>>>>(); std::future<vector<shared_ptr<mip::TemplateDescriptor>>> loadFuture = loadPromise->get_future(); engine->GetTemplatesAsync(engineObserver, loadPromise); auto templates = loadFuture.get(); cout << "*** Template List: " << endl; for (const auto& protectionTemplate : templates) { cout << "Name: " << protectionTemplate->GetName() << " : " << protectionTemplate->GetId() << endl; }
建立 PowerShell 腳本以產生存取令牌
使用下列 PowerShell 腳本來產生您的實作中 AuthDelegateImpl::AcquireOAuth2Token SDK 所要求的存取令牌。 腳本會使用您稍早在「MIP SDK 安裝和設定」中安裝的 ADAL.PS 模組中的 Get-ADALToken Cmdlet。
建立 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 = '<app-ID>' # App ID of the Azure AD app registration $redirectUri = '<redirect-uri>' # Redirect URI of the Azure AD app registration $response = Get-ADALToken -Resource $resourceUrl -ClientId $appId -RedirectUri $redirectUri -Authority $authority -PromptBehavior:RefreshSession $response.AccessToken | clip # Copy the access token text to the clipboard-
儲存文稿檔案,以便稍後在用戶端應用程式要求時執行。
建置及測試應用程式
最後,建置及測試用戶端應用程式。
使用 Ctrl+Shift+b (建置解決方案)來建置用戶端應用程式。 如果您沒有建置錯誤,請使用 F5 (開始偵錯) 來執行應用程式。
如果您的專案建置並成功執行,應用程式會在每次 SDK 呼叫您的
AcquireOAuth2Token()方法時,提示輸入存取令牌。 如果出現多次提示且要求的值相同,您可以重複使用先前產生的令牌:若要產生提示的存取令牌,請返回您的 PowerShell 腳稿並:
更新
$authority和$resourceUrl變數。 它們必須符合步驟 2 中控制台輸出中指定的值。執行 PowerShell 指令碼。 Cmdlet
Get-ADALToken會觸發Microsoft Entra 驗證提示,類似下列範例。 在步驟 2 的控制台輸出中指定相同的帳戶。 成功登入之後,存取令牌會放在剪貼簿上。您可能也需要同意,以允許應用程式在登入帳戶下執行時存取 MIP API。 當 Microsoft Entra 應用程式註冊未經預先同意時,可能會出現這種情況(請參照「MIP SDK 設定和組態」),或者您可能是使用來自不同租用戶的帳戶登入(而不是應用程式註冊所在的租用戶)。 只要按下 [ 接受 ] 即可記錄您的同意。
將存取令牌貼到步驟 2 的提示之後,控制台輸出應該會顯示保護範本,類似下列範例:
*** Template List: Name: Confidential \ All Employees : a74f5027-f3e3-4c55-abcd-74c2ee41b607 Name: Highly Confidential \ All Employees : bb7ed207-046a-4caf-9826-647cff56b990 Name: Confidential : 174bc02a-6e22-4cf2-9309-cb3d47142b05 Name: Contoso Employees Only : 667466bf-a01b-4b0a-8bbf-a79a3d96f720 C:\MIP Sample Apps\ProtectionQS\Debug\ProtectionQS.exe (process 8252) exited with code 0. To automatically close the console when debugging stops, enable Tools->Options->Debugging->Automatically close the console when debugging stops. Press any key to continue . . .備註
複製並儲存一或多個保護範本的標識碼(例如,
f42a3342-8706-4288-bd31-ebb85995028z),以便您在下一個快速指南中使用。
故障排除
執行C++應用程式時發生問題
| 總結 | 錯誤訊息 | 解決方法 |
|---|---|---|
| 不正確的存取令牌 |
發生例外狀況...存取令牌不正確/過期嗎? 失敗的 API 呼叫:profile_add_engine_async 失敗,發生:[類別 mip::PolicySyncException] 無法取得政策,請求失敗,HTTP 狀態代碼為 401,x-ms-diagnostics:[2000001;原因="與請求一起提交的 OAuth 令牌無法解析。";錯誤類別="invalid_token"],correlationId:[35bc0023-3727-4eff-8062-000006d5d672] C:\VSProjects\MipDev\Quickstarts\AppInitialization\x64\Debug\AppInitialization.exe (process 29924) 以代碼 0 結束。 按任意鍵關閉此視窗 。 . . |
如果您的專案建置成功,但您會看到類似左側的輸出,則方法中 AcquireOAuth2Token() 可能會有無效或過期的令牌。 返回 建立 PowerShell 腳本以產生存取令牌,並重新產生存取令牌 、再次更新 AcquireOAuth2Token() 和重建/重新測試。 您也可以使用 jwt.ms 單頁 Web 應用程式,檢查並驗證令牌及其宣告。 |
後續步驟
既然您已瞭解如何列出已驗證使用者可用的保護範本,請嘗試下一個快速入門:
[加密和解密文字](quick-protection-encrypt-decrypt text-cpp.md)