オフライン発行を使用すると、Rights Management サービスに最初に接続した後、クライアントはサービス呼び出しを行わずに、新しく保護されたコンテンツの 発行ライセンス を生成できます。 これは、オフライン モードで機能する必要があるアプリケーションや、サービス呼び出しを行わないようにする必要があるアプリケーションに役立ちます。
Requirements
オフライン発行機能には、次の要件があります。
- サポートされている MIP SDK のバージョン。
- Microsoft Purview Information Protection のライセンスを取得したユーザー。 ライセンス要件
- アプリケーションがオフラインでデータを初期化およびキャッシュするためのインターネット接続。
サポートされていません
次の項目は、オフライン発行機能の一部としてサポートされていません。
- Active Directory Rights Management Services (AD RMS) はサポートされていません。
- 二重キー暗号化 (DKE): DKE 機能は、公開時に公開キーをフェッチするためのサービス呼び出しを行う必要があります。
Protection SDK でのオフライン発行の使用
オフライン発行では、サービスを呼び出さずにアプリケーションを発行できるようにするには、次の 3 つの手順が必要です。
- プロファイル設定 (該当する SDK の場合) でオフライン発行設定を有効にします。
- テンプレートの更新レートを設定します。 この API は、キャッシュされたテンプレートの有効期間を設定します。
- テンプレート取得 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();