Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Panduan mulai cepat ini menjelaskan cara menggunakan SDK Perlindungan MIP untuk menampilkan daftar templat perlindungan yang tersedia bagi pengguna.
Prasyarat
Selesaikan prasyarat berikut sebelum melanjutkan:
- Selesaikan Mulai Cepat - Inisialisasi aplikasi klien - Perlindungan SDK (C++) terlebih dahulu, yang membangun solusi Visual Studio pemula. Panduan mulai cepat "Mencantumkan templat perlindungan" ini bergantung pada panduan mulai cepat sebelumnya untuk membuat solusi awal dengan benar.
- Opsional: Tinjau konsep templat RMS .
Menambahkan logika untuk mencantumkan templat perlindungan
Tambahkan logika ke templat perlindungan daftar yang tersedia untuk pengguna dengan menggunakan objek Mesin perlindungan.
Buka solusi Visual Studio yang Anda buat di artikel "Mulai Cepat - Inisialisasi aplikasi klien - Perlindungan SDK (C++)" sebelumnya.
Di Penjelajah Solusi, buka file .cpp dalam proyek Anda yang berisi implementasi
main()metode . Ini menggunakan nama default yang sama dengan proyek yang memuatnya, yang Anda tentukan selama pembuatan proyek.Tambahkan direktif berikut
usingsetelahusing mip::ProtectionEngine;, di dekat bagian atas file:using std::endl;Menjelang akhir isi
main(), di bawah kurung kurawal penutup}dari blokcatchterakhir dan di atasreturn 0;(tempat Anda berhenti pada panduan mulai cepat sebelumnya), sisipkan kode berikut:// 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; }
Membuat skrip PowerShell untuk menghasilkan token akses
Gunakan skrip PowerShell berikut untuk menghasilkan token akses yang diminta SDK dalam implementasi Anda AuthDelegateImpl::AcquireOAuth2Token . Skrip menggunakan Get-MsalToken cmdlet dari modul MSAL.PS yang Anda instal sebelumnya, dalam "penyiapan dan konfigurasi MIP SDK".
Buat file skrip PowerShell ( ekstensi.ps1), dan salin dan tempel skrip berikut ke dalam file:
-
$authoritydan$resourceUrldiperbarui nanti, di bagian berikut. - Perbarui
$appIddan$redirectUriagar sesuai dengan nilai yang Anda tentukan dalam pendaftaran aplikasi Microsoft Entra Anda.
$authority = '<authority-url>' # Specified when SDK calls AcquireOAuth2Token() $resourceUrl = '<resource-url>' # Specified when SDK calls AcquireOAuth2Token() $appId = '<app-ID>' # App ID of the Microsoft Entra app registration $redirectUri = '<redirect-uri>' # 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-
Simpan file skrip sehingga Anda dapat menjalankannya nanti, saat diminta oleh aplikasi klien Anda.
Membangun dan menguji aplikasi
Buat dan uji aplikasi klien Anda.
Gunakan Ctrl+Shift+B (Build Solution) untuk membangun aplikasi klien Anda. Jika build tidak memiliki kesalahan, gunakan F5 (Mulai penelusuran kesalahan) untuk menjalankan aplikasi Anda.
Jika proyek Anda berhasil membangun dan berjalan, aplikasi meminta token akses setiap kali SDK memanggil metode Anda
AcquireOAuth2Token(). Anda dapat menggunakan kembali token yang dihasilkan sebelumnya jika diminta beberapa kali dan nilai yang diminta sama:Untuk membuat token akses untuk perintah, kembali ke skrip PowerShell Anda dan:
Perbarui variabel
$authoritydan$resourceUrl. Mereka harus cocok dengan nilai yang ditentukan dalam output konsol di langkah 2.Jalankan skrip PowerShell.
Get-MsalTokenCmdlet memicu perintah autentikasi Microsoft Entra, mirip dengan contoh berikut. Tentukan akun yang sama yang disediakan dalam output konsol di langkah 2. Setelah berhasil masuk, PowerShell menempatkan token akses di clipboard.Anda mungkin juga perlu memberikan persetujuan untuk mengizinkan aplikasi mengakses API MIP saat berjalan di bawah akun masuk. Ini terjadi ketika pendaftaran aplikasi Microsoft Entra tidak disetujui sebelumnya (seperti yang diuraikan dalam "penyiapan dan konfigurasi SDK MIP"), atau Anda masuk dengan akun dari penyewa yang berbeda (selain yang mana aplikasi Anda terdaftar). Pilih Terima untuk merekam persetujuan Anda.
Setelah Anda menempelkan token akses ke perintah dari langkah 2, output konsol Anda harus menampilkan templat perlindungan, mirip dengan contoh berikut:
*** 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 . . .Nota
Salin dan simpan ID satu atau beberapa templat perlindungan (misalnya,
f42a3342-8706-4288-bd31-ebb85995028z) untuk digunakan dalam panduan mulai cepat berikutnya.
Pemecahan masalah
Masalah selama eksekusi aplikasi C++
| Ringkasan | Pesan kesalahan | Solusi |
|---|---|---|
| Token akses buruk |
Terjadi pengecualian... apakah token akses salah/kedaluwarsa? Panggilan API gagal: profile_add_engine_async gagal dengan: [class mip::PolicySyncException] Gagal mendapatkan kebijakan, permintaan gagal dengan kode status http: 401, x-ms-diagnostics: [2000001;reason="Token OAuth yang dikirimkan bersama permintaan tidak dapat diurai.";error_category="invalid_token"], correlationId:[aaaa0000-bb11-2222-33cc-444444dddddd]' C:\VSProjects\MipDev\Quickstarts\AppInitialization\x64\Debug\AppInitialization.exe (proses 29924) keluar dengan kode 0. Tekan tombol apa pun untuk menutup jendela ini . . . |
Jika proyek Anda berhasil dihasilkan, namun Anda melihat output yang mirip dengan yang di sebelah kiri, Anda mungkin memiliki token yang tidak valid atau kadaluwarsa dalam metode AcquireOAuth2Token() lagi, dan membangun kembali/mencoba kembali. Anda juga dapat memeriksa dan memverifikasi token dan klaimnya, menggunakan aplikasi web jwt.ms satu halaman. |
Langkah berikutnya
Sekarang setelah Anda mempelajari cara mencantumkan templat perlindungan yang tersedia untuk pengguna yang diautentikasi, coba panduan singkat berikutnya:
- Jelajahi sampel MIP Protection SDK C++ pada GitHub.