Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Implemente a funcionalidade de criptografia e descriptografia personalizadas em um suplemento do Outlook para proteger as comunicações por email. O OnMessageDecrypt evento permite que o suplemento identifique automaticamente as mensagens criptografadas e manipule a descriptografia, a exibição de conteúdo e as notificações de erro.
Visão geral dos fluxos de trabalho de criptografia e descriptografia
Dica
- Os fluxos de trabalho de criptografia e descriptografia implementam o recurso de ativação baseada em eventos. Se você não estiver familiarizado com a ativação baseada em eventos nos suplementos do Outlook, recomendamos que primeiro aprenda sobre o recurso e sua implementação. Para saber mais, consulte Ativar suplementos com eventos.
- O conjunto de requisitos mínimos e as plataformas com suporte podem variar para cada API recomendada nesta seção. Recomendamos verificar todos os requisitos em relação aos conjuntos de requisitos da API JavaScript do Outlook e complementá-los com a documentação da API específica.
A tabela a seguir fornece uma visão geral dos fluxos de trabalho de criptografia e descriptografia de um suplemento do Outlook. Ele também identifica se uma etapa requer uma solução personalizada ou se é compatível com a biblioteca de APIs JavaScript (Office.js) do Office.
| Etapa | Implementação |
|---|---|
| O usuário compõe uma mensagem e usa seu suplemento para aplicar regras de criptografia | Você deve implementar seu próprio protocolo de criptografia para que o suplemento possa proteger o conteúdo da mensagem e seus anexos. |
| O usuário envia a mensagem | Implemente um manipulador para o evento OnMessageSend para que o suplemento possa executar automaticamente o protocolo de criptografia quando o usuário selecionar Enviar. Para identificar uma mensagem que foi criptografada usando seu suplemento durante o processo de descriptografia, use as APIs de cabeçalhos da Internet para adicionar um cabeçalho a uma mensagem. A chave de cabeçalho deve corresponder ao HeaderName valor especificado no atributo do <elemento LaunchEvent> para o evento OnMessageDecrypt no manifesto do suplemento. Para obter mais informações, consulte Implementar descriptografia usando ativação baseada em eventos. |
| O destinatário recebe a mensagem criptografada e a abre | Se o destinatário tiver o mesmo suplemento usado para criptografar a mensagem instalada no Outlook, o suplemento verificará se a chave de cabeçalho incluída na mensagem corresponde ao valor especificado para o OnMessageDecrypt evento no manifesto. Essa operação é feita automaticamente por um suplemento que manipula o OnMessageDecrypt evento, para que você não precise implementar manualmente o marcar. Se os cabeçalhos corresponderem, o OnMessageDecrypt evento ocorrerá e seu manipulador será executado. Para obter mais informações, consulte Implementar descriptografia usando ativação baseada em eventos. |
| O suplemento descriptografa a mensagem | Você deve implementar seu próprio protocolo de descriptografia no OnMessageDecrypt manipulador de eventos. Enquanto o suplemento descriptografa a mensagem e os anexos, uma notificação é exibida ao usuário para alertá-lo de que a mensagem está sendo processada pelo suplemento. Essa notificação é mostrada automaticamente por um suplemento que manipula o OnMessageDecrypt evento, para que você não precise criar uma manualmente. |
| O destinatário exibe a mensagem descriptografada e os respectivos anexos, se houver | Quando a operação de descriptografia for concluída, uma notificação será exibida automaticamente ao usuário para alertá-lo de que o suplemento concluiu o processamento da mensagem.
OnMessageDecrypt No manipulador, chame o método event.completed e passe a ele um objeto MessageDecryptEventCompletedOptions. Com o MessageDecryptEventCompletedOptions objeto, você pode especificar se deseja exibir o conteúdo descriptografado para o destinatário. Para obter mais informações, consulte Implementar manipulação de eventos. |
Experimentar um suplemento concluído
Para ver imediatamente um suplemento de criptografia concluído em ação, experimente o exemplo Criptografar e descriptografar mensagens no Outlook.
Implementar a descriptografia usando a ativação baseada em eventos
Você deve implementar seus próprios protocolos de criptografia e descriptografia. O suplemento também deve ser configurado para manipular o OnMessageDecrypt evento para determinar convenientemente quando seu suplemento pode descriptografar uma mensagem e exibir o conteúdo descriptografado. Para implementar o OnMessageDecrypt evento, você deve:
Ambientes com suporte
O OnMessageDecrypt evento tem suporte na superfície de Leitura de Mensagem. O suporte varia de acordo com o cliente e o ambiente do Exchange, conforme mostrado na tabela a seguir.
| Cliente | Exchange Online | Exchange Subscription Edition (SE) | Exchange Server 2019 | Exchange Server 2016 |
|---|---|---|---|---|
| Navegador da Web | Com suporte | Não disponível | Não disponível | Não disponível |
| Windows (novo) | Com suporte | Não disponível | Não disponível | Não disponível |
|
Windows (clássico) Versão 2602 (Build 19725.20126) e posterior |
Com suporte | Não disponível | Não disponível | Não disponível |
| Mac | Não disponível | Não disponível | Não disponível | Não disponível |
| Android | Não disponível | Não disponível | Não disponível | Não disponível |
| iOS | Não disponível | Não disponível | Não disponível | Não disponível |
Configurar o manifesto
Observação
O OnMessageDecrypt evento e "extensions.autoRunEvents.events.options.headerName" a propriedade estão em versão prévia com o manifesto unificado. Não use o recurso de descriptografia com o manifesto unificado em um suplemento de produção.
No arquivo manifest.json do suplemento, você deve configurar e adicionar a matriz para habilitar a "extensions.runtimes""extensions.autoRunEvents" ativação baseada em eventos no suplemento.
Adicione o objeto a seguir à
"extensions.runtimes"matriz. Observe o seguinte sobre esta marcação.- O
"id"do tempo de execução é definido como o nome"autorun_runtime"descritivo . - A
"code"propriedade tem uma propriedade filho"page"que é definida para um arquivo HTML e uma propriedade filho"script"que é definida para um arquivo JavaScript. O Office usa um desses valores dependendo da plataforma.- O Outlook na Web e o novo Outlook no Windows executam o manipulador em um runtime de navegador, que carrega um arquivo HTML. Esse arquivo, por sua vez, contém uma
<script>tag que carrega o arquivo JavaScript. - O Outlook clássico no Windows executa o manipulador de eventos em um runtime somente JavaScript, que carrega um arquivo JavaScript diretamente. Para obter mais informações, consulte Runtimes em Suplementos do Office.
- O Outlook na Web e o novo Outlook no Windows executam o manipulador em um runtime de navegador, que carrega um arquivo HTML. Esse arquivo, por sua vez, contém uma
- A
"lifetime"propriedade é definida como"short", o que significa que o runtime é iniciado quando o evento é disparado e desligado quando o manipulador é concluído. -
As ações mapeiam manipuladores JavaScript para os
OnMessageSendeventos andOnMessageDecrypt.
"runtimes": [ { "requirements": { "capabilities": [ { "name": "Mailbox", "minVersion": "1.16" } ] }, "id": "autorun_runtime", "type": "general", "code": { "page": "https://localhost:3000/launchevents.html", "script": "https://localhost:3000/launchevents.js" }, "lifetime": "short", "actions": [ { "id": "onMessageSendHandler", "type": "executeFunction" }, { "id": "onMessageDecryptHandler", "type": "executeFunction" } ] } ],- O
Adicione a matriz a seguir
"autoRunEvents"como uma propriedade do objeto na"extensions"matriz. Observe o seguinte sobre esta marcação.- Um objeto de evento é criado para cada evento manipulado pelo suplemento. Neste exemplo, um objeto de evento é criado para
OnMessageSende outro paraOnMessageDecrypt. Ambos os eventos usam seu nome"messageSending"de evento de manifesto unificado e"messageDecrypt", conforme descrito na tabela de eventos com suporte. - Para garantir que o manipulador apropriado seja executado quando um evento ocorrer, o nome da função fornecido em
"actionId"deve corresponder ao nome usado na"id"propriedade do objeto aplicável na"runtimes.actions"matriz de uma etapa anterior. - A propriedade "options" fornece configuração adicional para os
OnMessageSendeventos andOnMessageDecrypt.- Para
OnMessageSend, a opção "sendMode" especifica se um usuário poderá enviar sua mensagem se ela não atender às condições de um suplemento. Neste exemplo, a"softBlock"opção é especificada. Para saber mais sobre as opções do modo de envio, consulte a seção "Opções de modo de envio disponíveis" de Lidar com eventos OnMessageSend e OnAppointmentSend no suplemento do Outlook com Alertas Inteligentes. - Para
OnMessageDecrypt, a opção "headerName" especifica o nome do cabeçalho da Internet usado para identificar se uma mensagem foi criptografada pelo suplemento. O mesmo cabeçalho é adicionado a uma mensagem criptografada pelo suplemento.
- Para
"autoRunEvents": [ { "events": [ { "type": "messageSending", "actionId": "onMessageSendHandler", "options": { "sendMode": "softBlock" } }, { "type": "messageDecrypt", "actionId": "onMessageDecryptHandler", "options": { "headerName": "contoso-encrypted" } } ] } ]- Um objeto de evento é criado para cada evento manipulado pelo suplemento. Neste exemplo, um objeto de evento é criado para
Implementar a manipulação de eventos
O OnMessageDecrypt manipulador de eventos é usado para executar a operação de descriptografia e determinar se o conteúdo descriptografado de uma mensagem deve ser exibido.
- Para garantir que o manipulador seja executado quando o
OnMessageDecryptevento ocorrer, chameOffice.actions.associateo arquivo JavaScript em que o manipulador está implementado. Isso mapeia o nome do manipulador especificado noFunctionNameatributo do<LaunchEvent>elemento no manifesto para sua contraparte JavaScript. - Depois que a operação de descriptografia for concluída, você deverá ligar
event.completedpara sinalizar ao cliente que o suplemento concluiu oOnMessageDecryptprocessamento do evento. Para exibir o conteúdo descriptografado de uma mensagem e seus anexos, passe um objeto MessageDecryptEventCompletedOptions para aevent.completedchamada e defina sua propriedade allowEvent comotrue. Em seguida, especifique o conteúdo descriptografado da mensagem nas propriedades emailBody e attachments do objeto. Você também pode especificar quaisquer dados que seu suplemento possa precisar processar na propriedade contextData . Por exemplo, você pode armazenar cabeçalhos personalizados da Internet para descriptografar mensagens em cenários de resposta e encaminhamento.
Observação
Lembre-se do seguinte ao criar um suplemento baseado em eventos para o Outlook clássico no Windows.
- Atualmente, não há suporte para as importações no arquivo JavaScript que contém o manipulador de eventos.
- Quando a função JavaScript especificada no manifesto para manipular um evento é executada, o código é
Office.onReady()inserido eOffice.initializenão é executado. É recomendável adicionar qualquer lógica de inicialização necessária ao manipulador de eventos, como verificar a versão do Outlook do usuário, ao manipulador de eventos.
Veja a seguir um exemplo de um OnMessageDecrypt manipulador de eventos.
function onMessageDecryptHandler(event) {
// Your code to decrypt the contents of a message would appear here.
...
// Use the results from your decryption process to display the decrypted contents of the message body and attachments.
const decryptedBodyContent = "<p>Please find attached the recent report and its supporting documentation.</p>";
const decryptedBody = {
coercionType: Office.CoercionType.Html,
content: decryptedBodyContent
};
// Decrypted content and properties of a file attachment.
const decryptedPdfFile = "JVBERi0xLjQKJeLjz9MKNCAwIG9i...";
const pdfFileName = "Fabrikam_Report_202509";
// Decrypted properties of a cloud attachment.
const cloudFilePath = "https://contosostorage.com/reports/weekly_forecast.xlsx";
const cloudFileName = "weekly_forecast.xlsx";
// Decrypted content and properties of an inline image.
const decryptedImageFile = "iVBORw0KGgoAAAANSUhEUgAA...";
const imageFileName = "banner.png";
const imageContentId = "image001.png@01DC1DD9.1A4AA300";
const decryptedAttachments = [
{
attachmentType: Office.MailboxEnums.AttachmentType.File,
content: decryptedPdfFile,
isInline: false,
name: pdfFileName
},
{
attachmentType: Office.MailboxEnums.AttachmentType.Cloud,
isInline: false,
name: cloudFileName,
path: cloudFilePath
},
{
attachmentType: Office.MailboxEnums.AttachmentType.File,
content: decryptedImageFile,
contentId: imageContentId,
isInline: true,
name: imageFileName
}
];
event.completed({
allowEvent: true,
emailBody: decryptedBody,
attachments: decryptedAttachments,
contextData: { messageType: "ReplyFromDecryptedMessage" }
});
}
// IMPORTANT: To ensure your add-in is supported in Outlook, remember to map the event handler name specified in the manifest to its JavaScript counterpart.
Office.actions.associate("onMessageDecryptHandler", onMessageDecryptHandler);
Dica
Quando as imagens são adicionadas a uma mensagem como anexos embutidos, elas recebem automaticamente uma ID de conteúdo. No corpo de uma mensagem, a ID do conteúdo de um anexo embutido é especificada no src atributo do <img> elemento semelhante ao exemplo a seguir.
<img width=96 height=96 id="Picture_1" src="cid:image001.png@01DC1E6F.FC7C7410">
Para identificar e fornecer facilmente esses anexos embutidos durante a descriptografia, recomendamos salvar as IDs de conteúdo dos anexos embutidos no cabeçalho da mensagem durante a criptografia. Chame Office.context.mailbox.item.getAttachmentsAsync para obter a ID de conteúdo de um anexo embutido. Em seguida, chame Office.context.mailbox.item.internetHeaders.setAsync para salvar a ID no cabeçalho da mensagem.
Descriptografar anexos de item do Outlook (visualização)
O suporte para descriptografar anexos de itens do Outlook (Office.MailboxEnums.AttachmentType.Item), especialmente anexos de email, está disponível para visualização no Outlook na Web e no Windows (novo e clássico). Para visualizar esse recurso no Outlook clássico no Windows, você deve instalar a versão 2606 (Build 20114.15110) ou posterior. Em seguida, ingresse no programa Microsoft 365 Insider e selecione a opção Canal Beta para acessar as compilações beta do Office. Para testar esse recurso usando o código de exemplo neste artigo, atualize a onMessageDecryptHandler função com o código a seguir.
// Decrypted content and properties of an email attachment.
const decryptedEmailFile = "VGhpcyBpcyBhIHRleHQgZmlsZS4=...";
const emailFileName = "Fabrikam_Report_202508.eml";
const decryptedAttachments = [
...
{
attachmentType: Office.MailboxEnums.AttachmentType.Item,
content: decryptedEmailFile,
name: emailFileName
}
];
...
Personalizar mensagens de erro para a operação de descriptografia (versão prévia)
Mensagens de erro personalizadas para operações de descriptografia com falha estão disponíveis para visualização no Outlook na Web e no Windows (novo e clássico). Para visualizar esse recurso no Outlook clássico no Windows, você deve instalar a versão 2606 (Build 20114.15110) ou posterior. Em seguida, ingresse no programa Microsoft 365 Insider e selecione a opção Canal Beta para acessar as compilações beta do Office.
Se a operação de descriptografia falhar, a allowEventevent.completed propriedade da chamada será definida como falsee o Outlook mostrará a seguinte notificação padrão ao usuário: "<O nome> do suplemento falhou ao processar sua mensagem". Para especificar uma mensagem de erro personalizada, defina a propriedade errorMessage da chamada do event.completed suplemento. Sua mensagem personalizada é prefixada com "Erro do nome> do <suplemento:". Se sua mensagem personalizada não puder ser mostrada, a notificação padrão será mostrada em vez disso.
O exemplo de código a seguir mostra como especificar uma mensagem de erro personalizada para o suplemento de descriptografia.
event.completed({
allowEvent: false,
errorMessage: "This message couldn't be decrypted. Contact the Contoso IT team for further assistance."
});
Gerenciar a distribuição de conteúdo descriptografado (versão prévia)
Para ajudar a impedir a distribuição não autorizada de conteúdo descriptografado, as opções de controle de acesso estão disponíveis para visualização no Outlook na Web e no Windows (novo e clássico). Para visualizar esse recurso no Outlook clássico no Windows, você deve instalar a versão 2606 (Build 20114.15110) ou posterior. Em seguida, ingresse no programa Microsoft 365 Insider e selecione a opção Canal Beta para acessar as compilações beta do Office.
Para limitar a impressão, a cópia ou o salvamento de conteúdo descriptografado, inclua a propriedade accessControls da event.completed chamada. Em seguida, defina as propriedades allowPrint, allowCopyPaste e allowSave como false. Se a propriedade não for especificada, os accessControls controles de acesso serão padrão para true.
Para testar esse recurso usando o código de exemplo neste artigo, atualize a event.completed chamada da função com o onMessageDecryptHandler código a seguir.
event.completed({
allowEvent: true,
emailBody: decryptedBody,
attachments: decryptedAttachments,
contextData: { messageType: "ReplyFromDecryptedMessage" },
accessControls: {
allowPrint: false,
allowCopyPaste: false,
allowSave: false
}
});
Observação
- No Outlook na Web, definir a
allowCopyPastepropriedadefalsecomo também impede que os usuários capturem suas telas na forma de capturas de tela ou gravações. A política de captura de tela permanece em vigor até que o usuário recarregue a guia do navegador Outlook. - No Outlook na Web e no novo Outlook no Windows, definir a
allowPrintpropriedade comofalsedesabilita o menu de contexto (que fornece opções como Copiar, Selecionar tudo e Imprimir). Se aallowCopyPastepropriedade estiver definida comotrue, o usuário ainda poderá copiar o conteúdo pressionando Ctrl+C, mas a opção Copiar no menu de contexto não estará disponível.
Comportamento e limitações
Esteja ciente dos comportamentos e limitações dos suplementos baseados em eventos. Para saber mais, consulte Ativar suplementos com eventos.
Como cada suplemento usa seu próprio protocolo de criptografia, uma mensagem só pode ser descriptografada pelo mesmo suplemento que a criptografou. Quando um usuário não tem o suplemento necessário instalado para descriptografar uma mensagem, uma notificação o alerta de que a mensagem está criptografada. Para guiar o usuário pelo processo de descriptografia, personalize uma mensagem de espaço reservado para o corpo da mensagem criptografada. A mensagem de espaço reservado pode incluir informações sobre como instalar o suplemento. Para definir o corpo da mensagem durante o processo de criptografia, chame Office.context.mailbox.item.body.setAsync.
Para garantir a segurança e a confidencialidade dos dados, o conteúdo descriptografado não é armazenado no cliente Outlook. O conteúdo de uma mensagem criptografada é descriptografado sempre que o usuário a abre.
Uma mensagem criptografada deve ser descriptografada antes que um usuário possa respondê-la ou encaminhá-la. Um usuário não pode responder ou encaminhar uma mensagem criptografada enquanto ela está sendo descriptografada.
Se um usuário navegar para outro item de email enquanto uma mensagem criptografada estiver sendo descriptografada, o processo de descriptografia deixará de ser executado. O usuário deve selecionar ou abrir a mensagem novamente para ativar o processo de descriptografia.
Ao responder ou encaminhar mensagens criptografadas, os rascunhos são salvos sem criptografia na pasta Rascunhos .
A
attachmentspropriedade doevent.completedmétodo não dá suporte a anexos do tipoOffice.MailboxEnums.AttachmentType.Item, exceto para visualização no Outlook na Web e no Windows (novo e clássico). Para saber mais, consulte Descriptografar anexos de itens do Outlook (versão prévia).Suplementos de criptografia personalizados não podem criptografar mensagens que já estão protegidas por DRM ou S/MIME.
No Outlook na Web e no novo Outlook no Windows, quando as mensagens criptografadas são agrupadas por conversa, somente a mensagem selecionada no momento do thread de conversa é descriptografada. As outras mensagens no thread de conversa permanecem criptografadas até que sejam selecionadas.
No Outlook na Web e no novo Outlook no Windows, os usuários só podem baixar uma mensagem descriptografada no formato EML. A opção de baixar no formato MSG não está disponível.
Notificações de descriptografia
Os suplementos que manipulam o OnMessageDecrypt evento exibem notificações automaticamente em determinados cenários de descriptografia, conforme descrito na tabela a seguir.
| Notificação | Cenário |
|---|---|
| <O nome> do suplemento não está disponível e não pode processar sua mensagem no momento. | Aplica-se ao Outlook clássico apenas no Windows. Essa notificação é exibida quando o suplemento não é carregado porque um erro impediu o suplemento de carregar ou porque o cliente ou computador do usuário está offline. |
| <O nome> do suplemento falhou ao processar sua mensagem. | Ocorreu um erro enquanto o suplemento descriptografava a mensagem. Para repetir a operação de descriptografia, o destinatário deve alternar para outra mensagem e, em seguida, abrir a mensagem criptografada novamente para invocar o OnMessageDecrypt evento. |
| <Nome> do suplemento O suplemento está descriptografando sua mensagem. | O suplemento está manipulando o OnMessageDecrypt evento para descriptografar a mensagem. |
| Esta mensagem é criptografada pelo <suplemento de nome> do suplemento. | Essa notificação é exibida aos destinatários que não têm o suplemento de criptografia necessário instalado. Para fornecer diretrizes sobre como descriptografar a mensagem, inclua uma mensagem de espaço reservado no corpo da mensagem criptografada. Para obter mais informações, consulte Comportamento e limitações. |
| <Nome> do suplemento O suplemento descriptografou sua mensagem. | O suplemento descriptografou com êxito o conteúdo da mensagem. O usuário agora pode exibir a mensagem e seus anexos. |
| <O nome> do suplemento está demorando mais do que o esperado para processar sua mensagem. | O suplemento está em execução há mais de cinco segundos, mas menos de cinco minutos. |
| <O nome> do suplemento atingiu o tempo limite. Para tentar novamente, selecione outro email e retorne a esta mensagem. | O suplemento atinge o tempo limite após a execução por cinco minutos. Para repetir a operação de descriptografia, o destinatário deve alternar para outra mensagem e, em seguida, abrir a mensagem criptografada novamente para invocar o OnMessageDecrypt evento. |
| <O nome> do suplemento atingiu o tempo limite. (versão prévia) | O suplemento atinge o tempo limite após a execução por cinco minutos. Esta notificação inclui uma ação Repetir para que o destinatário possa repetir a operação de descriptografia sem alternar para outra mensagem. Esse recurso de repetição está disponível para visualização no Outlook na Web e no Windows (novo e clássico). Para visualizar esse recurso no Outlook clássico no Windows, você deve instalar a versão 2606 (Build 20114.15110) ou posterior. Em seguida, ingresse no programa Microsoft 365 Insider e selecione a opção Canal Beta para acessar as compilações beta do Office. |
| <O nome> do suplemento não pode processar esta mensagem porque está protegido por um recurso de segurança interno. | O suplemento tenta processar uma mensagem que já está protegida por DRM ou S/MIME. |
| Mensagem de erro personalizada (versão prévia) | Ocorreu um erro enquanto o suplemento descriptografava a mensagem. Para repetir a operação de descriptografia, o destinatário deve alternar para outra mensagem e, em seguida, abrir a mensagem criptografada novamente para invocar o OnMessageDecrypt evento. Para obter orientações sobre como personalizar uma mensagem de erro para a operação de descriptografia, consulte Personalizar mensagens de erro para a operação de descriptografia (versão prévia). |
Confira também
- Exemplo: Criptografar e descriptografar mensagens no Outlook
- Privacidade e segurança para Suplementos do Office
- Ativar suplementos com eventos
- Solucionar problemas de suplementos baseados em eventos e de relatórios de spam
- Obter e definir cabeçalhos da Internet em uma mensagem em um suplemento do Outlook
- Gerenciar o rótulo de confidencialidade da sua mensagem ou compromisso no modo de redação