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 que desejam evitar fazer chamadas de serviço.

Requirements

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

  • Uma versão com suporte do SDK do MIP.
  • Um usuário licenciado para a Proteção de Informações do Microsoft Purview. Requisitos de licenciamento
  • Conectividade com a Internet para o aplicativo inicializar e armazenar dados em cache offline.

Sem suporte

Não há suporte para os seguintes itens como parte do recurso de publicação offline:

  • Não há suporte para o AD RMS (Active Directory Rights Management Services).
  • DKE (Criptografia de Chave Dupla): A funcionalidade DKE deve fazer uma chamada de serviço para buscar a chave pública ao publicar.

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 Arquivos

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

Comportamento de cache

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

Exemplos

Os seguintes snippets de código são obtidos destes 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 as configurações de ProtectionProfile (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 o 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 modelos para inicializar o cache (Java)

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