オフライン発行

オフライン発行を使用すると、Rights Management サービスに最初に接続した後、クライアントはサービス呼び出しを行わずに、新しく保護されたコンテンツの 発行ライセンス を生成できます。 これは、オフライン モードで機能する必要があるアプリケーションや、サービス呼び出しを行わないようにする必要があるアプリケーションに役立ちます。

Requirements

オフライン発行機能には、次の要件があります。

  • サポートされている MIP SDK のバージョン。
  • Microsoft Purview Information Protection のライセンスを取得したユーザー。 ライセンス要件
  • アプリケーションがオフラインでデータを初期化およびキャッシュするためのインターネット接続。

サポートされていません

次の項目は、オフライン発行機能の一部としてサポートされていません。

  • Active Directory Rights Management Services (AD RMS) はサポートされていません。
  • 二重キー暗号化 (DKE): DKE 機能は、公開時に公開キーをフェッチするためのサービス呼び出しを行う必要があります。

Protection SDK でのオフライン発行の使用

オフライン発行では、サービスを呼び出さずにアプリケーションを発行できるようにするには、次の 3 つの手順が必要です。

  1. プロファイル設定 (該当する SDK の場合) でオフライン発行設定を有効にします。
  2. テンプレートの更新レートを設定します。 この API は、キャッシュされたテンプレートの有効期間を設定します。
  3. テンプレート取得 API を呼び出してキャッシュを設定します (GetTemplatesAsync() または GetTemplates())。

ファイル SDK でのオフライン発行の使用

File SDK では、既定でオフライン発行が使用され、追加のセットアップや構成は必要ありません。

キャッシュの動作

更新期間が経過するまで、または GetTemplatesAsync() または GetTemplates() が呼び出されるまで、アプリケーションはサービスに連絡してテンプレートを取得しません。 アプリケーションがオフラインでキャッシュの有効期限が切れている場合、発行は失敗します。 更新間隔は、エンド ユーザーのオフライン使用とテンプレートの最新の状態とのバランスを取る必要があります。 ほとんどのアプリケーションでは、24 時間以下が理想的です。

例示

次のコード スニペットは、これらのサンプル アプリケーションから取得されます。

次の手順を完了すると、テンプレート キャッシュの有効期限が切れていない場合は、サービス呼び出しを行わずに発行ライセンスの作成が行われます。

C++ の例

ProtectionProfileSettings の構成 (C++)

// Initialize ProtectionProfileSettings using MipContext
ProtectionProfile::Settings profileSettings(mMipContext,
    mip::CacheStorageType::OnDiskEncrypted,
    ::make_shared<sample::consent::ConsentDelegateImpl>(),
    std::make_shared<ProtectionProfileObserverImpl>()
);

// Enable Offline Publishing
profileSettings.SetOfflinePublishing(true);

テンプレートの更新期間を設定する (C++)

// Set the template refresh interval
engineSettings.SetTemplateRefreshArgs(std::chrono::hours(24));

キャッシュを初期化するためのテンプレートをフェッチする (C++)

auto loadPromise = std::make_shared<std::promise<vector<shared_ptr<mip::TemplateDescriptor>>>>();
std::future<vector<shared_ptr<mip::TemplateDescriptor>>> loadFuture = loadPromise->get_future();
mEngine->GetTemplatesAsync(engineObserver, loadPromise);
auto templates = loadFuture.get();

.NET の例

ProtectionProfileSettings (.NET) の構成

// Initialize ProtectionProfileSettings
var profileSettings = new ProtectionProfileSettings(mipContext, 
                CacheStorageType.OnDisk, 
                new ConsentDelegateImplementation());

// Enable Offline Publishing
profileSettings.OfflinePublishing = true;

テンプレートの更新期間の設定 (.NET)

// Initialize ProtectionEngineSettings
var engineSettings = new ProtectionEngineSettings(identity.Email, authDelegate, "", "")
{
    Identity = identity
};

// Set the template refresh interval
engineSettings.TemplateRefreshRate = new TimeSpan(24, 0, 0);

var engine = profile.AddEngine(engineSettings);

キャッシュを初期化するためのテンプレートをフェッチする (.NET)

List<TemplateDescriptor> templates = engine.GetTemplates();

Java の例

ProtectionProfileSettings の構成 (Java)

ProtectionProfileSettings profileSettings = new ProtectionProfileSettings();
profileSettings.setMipContext(mipContext);
profileSettings.setCacheStorageType(CacheStorageType.ON_DISK);
profileSettings.setConsentDelegate(new ConsentDelegateImplementation());

// Enable Offline Publishing
profileSettings.setOfflinePublishing(true);

テンプレートの更新期間を設定する (Java)

ProtectionEngineSettings engineSettings = new ProtectionEngineSettings(identity.getEmail(), authDelegate, "", "");
engineSettings.setIdentity(identity);

// Set the template refresh interval in hours
engineSettings.setTemplateRefreshRate(Duration.ofHours(24));

キャッシュを初期化するためのテンプレートをフェッチする (Java)

List<TemplateDescriptor> templates = engine.getTemplates();