Publicação offline

A publicação offline permite que um cliente, depois de fazer uma conexão inicial com o serviço de gerenciamento de direitos, gere licenças de publicação para conteúdo recém-protegido sem fazer uma chamada de serviço. Isso é útil para aplicativos que precisam funcionar em um modo offline ou querem evitar fazer chamadas de serviço.

Requerimentos

O recurso de publicação offline tem os seguintes requisitos:

  • Uma versão suportada do MIP SDK.
  • Um usuário licenciado para o Microsoft Purview Information Protection. Requisitos de licenciamento
  • Conectividade com a Internet para o aplicativo inicializar e armazenar dados em cache offline.

Não suportado

Os seguintes itens não são suportados como parte do recurso de publicação offline:

  • Não há suporte para o Ative Directory Rights Management Services (AD RMS).
  • Criptografia de chave dupla (DKE): o recurso DKE deve fazer uma chamada de serviço para buscar a chave pública durante a publicação.

Usando a publicação offline com o SDK de proteção

A publicação offline requer três etapas para permitir que o aplicativo publique sem chamar o serviço:

  1. Habilite a configuração de publicação offline nas configurações de perfil (para o SDK aplicável).
  2. Defina a taxa de atualização do modelo. Essa API define o período de validade para os modelos armazenados em cache.
  3. Chame as APIs de recuperação de modelo para preencher o cache (GetTemplatesAsync() ou GetTemplates()).

Usando a publicação offline com o SDK de arquivo

O SDK de arquivo usa a publicação offline por padrão e não requer nenhuma instalação ou configuração adicional.

Comportamento de cache

Uma aplicação não entrará em contato com o serviço para obter modelos até que o período de atualização tenha expirado ou até GetTemplatesAsync() ou GetTemplates() serem chamados. Se o aplicativo estiver offline e o cache tiver expirado, a publicação falhará. O intervalo de atualização deve encontrar um equilíbrio entre o uso offline para usuários finais e garantir que os modelos sejam atualizados. Para a maioria das aplicações, 24 horas, ou menos, é o ideal.

Exemplos

Os seguintes trechos de código são retirados desses aplicativos de exemplo:

Depois de concluir as etapas a seguir, a criação de uma licença de publicação ocorrerá sem fazer uma chamada de serviço se o cache de modelos não tiver expirado.

Exemplo de C++

Configurar 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);

Definir o período de atualização do modelo (C++)

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

Buscar modelos para inicializar o cache (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();

Exemplo do .NET

Configurar ProtectionProfileSettings (.NET)

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

// Enable Offline Publishing
profileSettings.OfflinePublishing = true;

Definir período de atualização do modelo (.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);

Buscar modelos para inicializar o cache (.NET)

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

Exemplo de Java

Configurar ProtectionProfileSettings (Java)

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

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

Definir o período de atualização do modelo (Java)

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

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

Buscar templates para inicializar a cache (Java)

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