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.
mip::PolicyEngine mengimplementasikan semua operasi yang dapat dilakukan oleh Policy SDK, kecuali memuat profil.
Implementasi: Tambahkan mesin kebijakan
Implementasi: Membuat pengaturan mesin kebijakan
Mirip dengan profil, mesin juga memerlukan objek pengaturan, mip::PolicyEngine::Settings. Objek ini menyimpan pengenal unik mesin, objek dari implementasi mip::AuthDelegate Anda, data klien yang dapat disesuaikan untuk penelusuran kesalahan atau telemetri, serta, secara opsional, setelan lokal.
Contoh berikut membuat objek yang PolicyEngine::Settings disebut engineSettings dengan menggunakan identitas pengguna aplikasi:
PolicyEngine::Settings engineSettings(
mip::Identity(mUsername), // mip::Identity.
authDelegateImpl, // Auth delegate object
"", // Client data. Customizable by developer, stored with engine.
"en-US", // Locale.
false); // Load sensitive information types for driving classification.
Saat membuat engineSettings dengan cara ini, juga secara eksplisit mengatur engineId unik:
engineSettings.SetEngineId(engineId);
Menggunakan nama pengguna atau email membantu memastikan bahwa mesin yang sama dimuat setiap kali pengguna menggunakan layanan atau aplikasi.
Juga valid untuk memberikan ID mesin kustom:
PolicyEngine::Settings engineSettings(
"myEngineId", // String
authDelegateImpl, // Auth delegate object
"", // Client data in string format. Customizable by developer, stored with engine.
"en-US", // Locale. Default is en-US
false); // Load sensitive information types for driving classification. Default is false.
Sebagai praktik terbaik, gunakan parameter pertama, id, yang menghubungkan mesin ke pengguna terkait, sebaiknya nama utama pengguna.
Implementasi: Tambahkan mesin kebijakan
Untuk menambahkan mesin, kembali ke pola future/promise yang digunakan untuk memuat profil. Alih-alih membuat janji untuk mip::Profile, gunakan mip::PolicyEngine.
// Auto profile will be std::shared_ptr<mip::Profile>.
auto profile = profileFuture.get();
// Create the delegate
auto authDelegateImpl = std::make_shared<sample::auth::AuthDelegateImpl>(appInfo, userName, password);
// Create the PolicyEngine::Settings object.
PolicyEngine::Settings engineSettings("UniqueID", authDelegateImpl, "");
// Create a promise for std::shared_ptr<mip::PolicyEngine>.
auto enginePromise = std::make_shared<std::promise<std::shared_ptr<mip::PolicyEngine>>>();
// Instantiate the future from the promise.
auto engineFuture = enginePromise->get_future();
// Add the engine using AddEngineAsync, passing in the engine settings and the promise.
profile->AddEngineAsync(engineSettings, enginePromise);
// Get the future value and store in std::shared_ptr<mip::PolicyEngine>.
auto engine = engineFuture.get();
Kode menambahkan mesin untuk pengguna yang diautentikasi ke profil.
Penerapan: Mencantumkan label sensitivitas
Dengan menggunakan mesin yang ditambahkan, Anda dapat mencantumkan semua label sensitivitas yang tersedia untuk pengguna yang diautentikasi dengan memanggil engine->ListSensitivityLabels().
ListSensitivityLabels() mengambil daftar label dan atribut label tersebut untuk pengguna tertentu dari layanan. Hasilnya disimpan dalam vektor std::shared_ptr<mip::Label>.
Implementasi: ListSensitivityLabels()
std::vector<shared_ptr<mip::Label>> labels = engine->ListSensitivityLabels();
Implementasi: Cetak label
//Iterate through all labels in the vector
for (const auto& label : labels) {
//print the label name
cout << label->GetName() << endl;
//Iterate through all child labels
for (const auto& child : label->GetChildren()) {
//Print the label with some formatting
cout << "-> " << child->GetName() << endl;
}
}
Mencetak nama menunjukkan bahwa aplikasi berhasil menarik kebijakan dari layanan dan mendapatkan label. Untuk menerapkan label, Anda memerlukan pengidentifikasi label. Ubah cuplikan sebelumnya untuk mengembalikan ID label:
for (const auto& label : labels) {
//Print label name and GUID
cout << label->GetName() << " : " << label->GetId() << endl;
//Print child label name and GUID
for (const auto& child : label->GetChildren()) {
cout << "-> " << child->GetName() << " : " << child->GetId() << endl;
}
}
Anda dapat menggunakan koleksi mip::Label yang dikembalikan oleh ListSensitivityLabels() untuk menampilkan semua label yang tersedia untuk pengguna lalu, ketika dipilih, gunakan ID untuk menerapkan label ke file.