Aracılığıyla paylaş


Microsoft Information Protection SDK - Dosya SDK'sı altyapısı kavramları

mip::FileEngine IÇINDEKI MIP Dosya SDK'sı, belirtilen kimlik adına gerçekleştirilen tüm işlemler için bir arabirim sağlar. Uygulamada oturum açabilen her kullanıcı için bir altyapı eklenir ve altyapının gerçekleştirdiği tüm işlemler bu kimlik bağlamında gerçekleştirilir.

iki FileEngine birincil sorumluluk içerir: Kimliği doğrulanmış bir kullanıcının etiketlerini listeleme ve kullanıcı adına dosya işlemleri gerçekleştirmek için dosya işleyicileri oluşturma.

  • mip::FileEngine
  • ListSensitivityLabels(): Yüklenen altyapı için etiketlerin listesini alır.
  • CreateFileHandler(): Belirli bir dosya veya akış için bir mip::FileHandler oluşturur.

Dosya Altyapısı Ekleme

Profil ve Altyapı nesneleri bölümünde açıklandığı gibi, bir altyapının iki durumu olabilir: CREATED veya LOADED. Bu iki eyaletten biri değilse, yok demektir. Hem durum oluşturmak hem de yüklemek için yalnızca öğesine tek bir çağrı FileProfile::LoadAsyncyapmak gerekir. Altyapı önbelleğe alınmış durumda zaten varsa, olacaktır LOADED. Yoksa ve LOADEDolacaktırCREATED. CREATED uygulamanın, altyapıyı yüklemek için gereken hizmetten gelen tüm bilgilere sahip olduğunu gösterir. LOADED altyapıdan yararlanmak için gereken tüm veri yapılarının bellekte oluşturulduğunu gösterir.

Dosya Altyapısı oluşturma Ayarlar

Bir profile benzer şekilde, altyapı da bir ayarlar nesnesi gerektirir. mip::FileEngine::Settings Bu nesne benzersiz altyapı tanımlayıcısını, mip::AuthDelegate uygulamayı, hata ayıklama veya telemetri için kullanılabilecek özelleştirilebilir istemci verilerini ve isteğe bağlı olarak yerel ayarı depolar.

Burada uygulama kullanıcısının kimliğini kullanarak engine Ayarlar adlı bir FileEngine::Settings nesne oluşturuyoruz.

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

Altyapı oluştururken Ayarlar bu şekilde benzersiz bir engineId ayarlamak da önemlidir:

engineSettings.SetEngineId(engineId);

Kullanıcı adı veya e-postanın kullanılması, kullanıcı hizmeti veya uygulamayı her kullandığında aynı altyapının yüklendiğinden emin olmak için yardımcı olur.

Ayrıca, özel bir altyapı kimliği sağlamak da geçerlidir:

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

En iyi yöntem olarak, ilk parametresi, idaltyapının ilişkili kullanıcıya kolayca bağlanmasına olanak tanıyan bir şey olmalıdır. E-posta adresi, UPN veya AAD nesne GUID'si gibi bir şey, kimliğin hem benzersiz olmasını hem de hizmeti çağırmadan yerel durumdan yüklenebilmesini sağlar.

Dosya Altyapısını Ekleme

Altyapıyı eklemek için profili yüklemek için kullanılan promise/future desenine geri döneceğiz. için mip::FileProfilepromise oluşturmak yerine kullanılarak mip::FileEngineoluşturulur.

  //auto profile will be std::shared_ptr<mip::FileProfile>
  auto profile = profileFuture.get();

  // Instantiate the AuthDelegate implementation.
  auto authDelegateImpl = std::make_shared<sample::auth::AuthDelegateImpl>(appInfo, userName, password);

  //Create the FileEngine::Settings object
  FileEngine::Settings engineSettings("UniqueID", authDelegateImpl, "");

  //Create a promise for std::shared_ptr<mip::FileEngine>
  auto enginePromise = std::make_shared<std::promise<std::shared_ptr<mip::FileEngine>>>();

  //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::FileEngine>
  auto engine = engineFuture.get();

Yukarıdaki kodun sonucu, kimliği doğrulanmış kullanıcının altyapısının profile eklenmesidir.

Duyarlılık Etiketlerini Listeleme

Eklenen altyapıyı kullanarak, kimliği doğrulanmış kullanıcının kullanabileceği tüm duyarlılık etiketlerini çağırarak engine->ListSensitivityLabels()listelemek artık mümkündür.

ListSensitivityLabels() , hizmetten belirli bir kullanıcı için bu etiketlerin etiket ve özniteliklerinin listesini getirir. Sonuç, vektörde std::shared_ptr<mip::Label>depolanır.

Daha fazla bilgi için buraya bakın mip::Label.

ListSensitivityLabels()

std::vector<shared_ptr<mip::Label>> labels = engine->ListSensitivityLabels();

Veya basitleştirilmiş:

auto labels = engine->ListSensitivityLabels();

Adları yazdırmak, ilkeyi hizmetten başarıyla çektiğimizi ve etiketleri alabildiğimizi göstermenin kolay bir yoludur. Etiketi uygulamak için etiket tanımlayıcısı gereklidir. Aşağıdaki kod tüm etiketlerde yinelenir ve her üst ve alt etiket için ve id değerlerini görüntülername.

//Iterate through all labels in the vector
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;
  }
}

tarafından GetSensitivityLabels() döndürülen koleksiyonumip::Label, kullanıcının kullanabileceği tüm etiketleri görüntülemek için kullanılabilir ve seçildiğinde, bir dosyaya etiket uygulamak için kimliği kullanabilir.

Sonraki Adımlar

Artık profil yüklendiğine, altyapı eklendiğine ve etiketlerimiz olduğuna göre, dosyaları okumaya, yazmaya veya dosyalardan etiketleri kaldırmaya başlamak için bir işleyici ekleyebiliriz. Bkz. MIP SDK'sında dosya işleyicileri.