Panduan Cepat: Daftar Templat Perlindungan (C++)

Panduan Cepat ini memperlihatkan kepada Anda cara menggunakan SDK Perlindungan MIP, untuk menerapkan templat perlindungan yang tersedia untuk pengguna.

Prasyarat

Jika Anda belum melakukannya, pastikan untuk menyelesaikan prasyarat berikut sebelum melanjutkan:

Menambahkan logika untuk mencantumkan templat perlindungan

Tambahkan logika ke templat perlindungan daftar yang tersedia untuk pengguna, menggunakan objek Mesin perlindungan.

  1. Buka solusi Visual Studio yang Anda buat di artikel "Mulai Cepat - Inisialisasi aplikasi klien - Perlindungan SDK (C++)" sebelumnya.

  2. Menggunakan 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.

  3. Tambahkan direktif berikut using setelah using mip::ProtectionEngine;, di dekat bagian atas file:

    using std::endl;
    
  4. Menjelang akhir dari main() isi, di bawah kurung kurawal penutup } dari blok terakhir catch dan di atas return 0; (tempat Anda berhenti di Quickstart 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 oleh SDK dalam implementasi Anda AuthDelegateImpl::AcquireOAuth2Token . Skrip menggunakan Get-MsalToken cmdlet dari modul MSAL.PS yang Anda instal sebelumnya, di "Penyiapan dan konfigurasi MIP SDK".

  1. Buat file Skrip PowerShell ( ekstensi.ps1), dan salin/tempel skrip berikut ke dalam file:

    • $authority dan $resourceUrl diperbarui nanti, di bagian berikut.
    • Perbarui $appId dan $redirectUri, agar 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
    
  2. Simpan file skrip sehingga Anda dapat menjalankannya nanti, saat diminta oleh aplikasi klien Anda.

Membangun dan menguji aplikasi

Terakhir, bangun dan uji aplikasi klien Anda.

  1. Gunakan Ctrl+Shift+b (Build Solution) untuk membangun aplikasi klien Anda. Jika tidak ada kesalahan build, gunakan F5 (Mulai debugging) untuk menjalankan aplikasi Anda.

  2. 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:

  3. Untuk membuat token akses untuk perintah, kembali ke skrip PowerShell Anda dan:

    • Perbarui variabel $authority dan $resourceUrl. Mereka harus cocok dengan nilai yang disebutkan dalam output konsol di langkah #2.

    • Jalankan skrip PowerShell. Get-MsalToken Cmdlet memicu permintaan autentikasi Microsoft Entra, mirip dengan contoh di bawah ini. Tentukan akun yang sama yang disediakan dalam output konsol di langkah #2. Setelah berhasil masuk, token akses akan ditempatkan di clipboard.

      Visual Studio dapatkan token masuk

    • Anda mungkin juga perlu memberikan persetujuan, untuk memungkinkan 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). Cukup klik Terima untuk merekam persetujuan Anda.

      Persetujuan Visual Studio

  4. Setelah menempelkan token akses ke prompt 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 dari satu atau beberapa templat perlindungan (misalnya, f42a3342-8706-4288-bd31-ebb85995028z), karena Anda akan menggunakannya di 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 dengan permintaan tidak dapat diurai."; error_category="invalid_token"], correlationId:[35bc0023-3727-4eff-8062-000006d5d672]

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 Anda. Kembali ke Membuat skrip PowerShell untuk menghasilkan token akses dan meregenerasi token akses, memperbarui 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: