Compartilhar via


Republicação (C++)

Visão geral

Esta visão geral se concentra na republicação no SDK da PIM, que é um cenário específico encontrado quando um aplicativo deve permitir que um usuário edite o arquivo, mas deseja manter as informações originais da licença de publicação sobre proprietário, direitos, chave de conteúdo etc.

O padrão pode ser semelhante a:

  • Um usuário abre um documento protegido para edição.
  • O usuário só deve ter permissão para editar o arquivo se tiver recebido os direitos apropriados.
  • O usuário edita e salva o documento.

O pseudocódigo do SDK da PIM para a realização dessa tarefa pode ser semelhante a:

  • Crie um mip::FileHandler que aponte para o arquivo de destino.
  • Armazene o mip::ProtectionHandler exposto pelo método GetProtection() de mip::FileHandler.
  • Verifique se o usuário tem direitos EDIT chamando o método AccessCheck().
  • Use GetDecryptedTemporaryFileAsync() de mip::FileHandler ou GetDecryptedTemporaryStreamAsync() para obter uma saída temporária descriptografada.
  • Edite o arquivo temporário ou o conteúdo do fluxo e salve.
  • Crie uma nova instância mip::FileHandler apontando para o arquivo temporário e use o método SetProtection(), fornecendo o mip::ProtectionHandler armazenado como o parâmetro.
  • Confirme a alteração.

Usando o mip::ProtectionHandler do arquivo original, o proprietário, a ID de conteúdo, a chave de conteúdo etc. serão mantidos no documento editado. Esse cenário de republicação exige que o aplicativo mantenha uma referência ao mip::ProtectionHandler original.

Implementação

Conforme discutido anteriormente, a classe mip::FileHandler expõe métodos para ler, gravar e remover rótulos e informações de proteção. Para obter a lista completa de operações com suporte, examine a referência para mip::FileHandler.

Esse cenário usa os seguintes métodos de mip::FileHandler:

  • GetProtection()
  • CommitAsync()
  • GetDecryptedTemporaryFileAsync()
  • SetProtection()

O cenário também usa mip::ProtectionHandler, que expõe as funções para criptografar e descriptografar fluxos e buffers protegidos, executar verificações de acesso, obter a licença de publicação e obter atributos com base nas informações protegidas. O método AccessCheck() será usado para validar se o usuário tem direitos para editar o arquivo.

Para concluir com êxito esse cenário de reproteção, revise os Inícios rápidos em “Próximas etapas” e verifique se o aplicativo é compilado e pode listar rótulos com êxito.

Criar um manipulador de proteção com base no arquivo e descriptografar o arquivo

O mip::ProtectionHandler expõe as funções para criptografar e descriptografar fluxos e buffers protegidos, executar verificações de acesso, obter a licença de publicação e obter atributos com base nas informações protegidas. Objetos mip::ProtectionHandler são construídos ao ser fornecido um ProtectionDescriptor ou uma licença de publicação serializada. Para este caso de uso, estaríamos implicitamente usando a licença de publicação, pois ela é usada ao descriptografar conteúdo já protegido ou ao proteger conteúdo em que a licença já foi construída.

O mip::FileHandler expõe um método denominado GetProtection() que recupera mip::ProtectionHandler do arquivo associado ao mip::FileHandler. Depois que o objeto mip::ProtectionHandler for recuperado, o mesmo poderá ser usado para validar os níveis de acesso do usuário para o arquivo, descriptografar o arquivo e, posteriormente, criptografar o arquivo depois que ele for editado.

O mip::ProtectionHandler de AccessCheck() é usado para validar que o usuário tem um direito específico ao arquivo e retorna uma resposta booliana, dependendo do resultado. Por exemplo, para verificar se o usuário tem direitos para editar, chame o método passando o valor “EDIT”. Se o resultado for true, permita que o usuário edite o arquivo. Depois que o direito EDIT for verificado, use o mip::FileHandler de GetDecryptedTemporaryFileAsync() para recuperar o arquivo temporário descriptografado.

Para obter mais detalhes sobre vários direitos de usuário, veja Direitos de usuário para a Proteção de Informações do Azure.

Importante

As verificações de acesso e a imposição são de responsabilidade exclusiva do desenvolvedor do aplicativo. Um usuário com direitos VIEW pode descriptografar as informações protegidas. Cabe ao aplicativo validar o conjunto de direitos concedidos ao usuário e impor esses direitos por meio de controles de proteção de informações, como impedir cópia, edição ou capturas de tela. A não implementação adequada dos controles de proteção pode resultar na exposição de informações confidenciais.

Salvar e publicar o arquivo editado aplicando a Proteção

Depois que o arquivo é descriptografado, ele pode ser editado. Quando a operação de edição for concluída, as alterações poderão ser confirmadas. Crie um objeto IFileHandler usando o arquivo temporário acima para manipular o arquivo confirmado. O arquivo temporário pode ser protegido usando o objeto IProtectionHandler recuperado do arquivo original.

Próximas etapas