Partilhar via


Republicação (C++)

Descrição geral

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

O padrão pode ser algo como:

  • 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 MIP SDK para realizar esta tarefa pode ter a seguinte aparência:

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

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

Implementação

Como discutido anteriormente, a mip::FileHandler classe expõe métodos de leitura, escrita e remoção de rótulos e informações de proteção. Para obter a lista completa de operações suportadas, revise a referência para mip::FileHandler.

Este 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 das informações protegidas. O AccessCheck() método será usado para validar que 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 cria e pode listar rótulos com êxito.

Crie um manipulador de proteção a partir do arquivo e descriptografe o arquivo

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 das informações protegidas. mip::ProtectionHandler objetos são construídos fornecendo 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 a licença de publicação é usada ao descriptografar conteúdo já protegido ou ao proteger conteúdo onde a licença já foi construída.

mip::FileHandler expõe um método chamado GetProtection() que recupera mip::ProtectionHandler do arquivo associado ao mip::FileHandler. Uma vez que o mip::ProtectionHandler objeto é recuperado, o mesmo pode ser usado para validar os níveis de acesso do usuário para o arquivo, descriptografar o arquivo e, mais tarde, criptografar o arquivo uma vez que é editado.

mip::ProtectionHandler's AccessCheck() é usado para validar que o usuário tem um direito específico ao arquivo e retorna uma resposta booleana, 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 verdadeiro, permita que o usuário edite o arquivo. Assim que o direito EDIT for verificado, use mip::FileHandler's GetDecryptedTemporaryFileAsync() para recuperar o ficheiro desencriptado temporário.

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

Importante

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

Salve e publique o arquivo editado aplicando Proteção

Depois que o ficheiro é desencriptado, o ficheiro pode ser editado. Uma vez concluída a operação de edição, as alterações podem ser confirmadas. Crie um IFileHandler objeto usando o arquivo temporário acima para manipular o arquivo confirmado. O arquivo temporário pode então ser protegido usando o IProtectionHandler objeto recuperado do arquivo original.

Passos Seguintes