Artigo
· Jun. 13, 2023 4min de leitura

Integrando e-mail do Outlook com oAuth 2.0 no Intersystems IRIS 2020

Introdução

Neste artigo, vamos explorar como integrar uma conta de e-mail do Outlook Exchange com oAuth 2.0 na plataforma Intersystems IRIS 2020. Embora essa tarefa possa parecer simples. No exemplo explorado, utilizamos o código da versão 2022 (você pode baixar a versão de avaliação) e adaptamos para a versão 2020. Embora seja viável atualizar entre as versões com o instalador IRIS 2022, isso leva semanas de testes antes de fazer a alteração em produtividade. Como a integração não podia esperar, decidimos pegar componentes do IRIS 2022 e copiá-los/adaptá-los para a versão 2020.

Para aqueles que não sabem, a Microsoft descontinuou a autenticação básica das contas do Exchange Online (https://learn.microsoft.com/pt-br/lifecycle/announcements/basic-auth-dep...), dada essa situação, qualquer adaptador de correio de entrada (POP3 no caso do IRIS) ou de saída (SMTP no IRIS) agora requer autenticação OAuth 2.0 (https://learn.microsoft.com/pt-br/exchange/client-developer/legacy-proto...).

Como sabemos, o OAuth é um protocolo de autorização que permite que um aplicativo, neste caso o IRIS, acesse os recursos protegidos de um usuário em um serviço online (como Facebook ou Google), sem precisar compartilhar a senha do usuário. Em vez disso, o usuário autoriza o aplicativo a acessar seus recursos por meio de um token de acesso emitido pelo serviço online. O protocolo OAuth é amplamente utilizado na autenticação e autorização de aplicativos da web e móveis.

Ao pesquisar na documentação do IRIS, verificamos que a versão 2022 possui integrações nativas disponíveis para o OAuth.

Porem a versão 2020 ainda não possui essas opções disponíveis:

Solução

Navegando pelas classes do IRIS 2022, especificamente na versão "IRIS for Windows (x86-64) 2022.1.2 (Build 574U)", encontramos duas classes que continham o código necessário para se conectar com um token de autenticação: %Net.POP3 e EnsLib.EMail.InboundAdapter. Comparamos ambas as versões, entre o IRIS 2020 e o IRIS 2022, e começamos a realizar testes de conexão.

Após várias tentativas, conseguimos realizar a integração criando e configurando as seguintes classes:

TEST01.BO.REST.OAUTHTOKEN: Esta classe é responsável por fazer a solicitação REST para obter o token, neste caso, da Microsoft. Ela é chamada pelo serviço POP3 no método onTask sempre que precisa de um novo token.

TEST01.Email.POP3: Essa classe é uma cópia da classe %Net.POP3 do IRIS 2020, mas precisamos modificá-la no método ConnectPort e adicionar um novo parâmetro chamado "AccessToken". Além disso, devemos adicionar o código (que pode ser resgatado da própria classe, porém da versão 2022) que utiliza o token para se conectar ao servidor de e-mail.

TEST01.Email.InboundAdapter: Essa classe é uma cópia do EnsLib.EMail.InboundAdapter, mas precisamos fazer duas modificações. Primeiro, devemos modificar a propriedade MailService para "Property MailServer As TEST01.Email.POP3;". Além disso, precisamos modificar o método onTask para que ele utilize a global que armazena o token necessário para acessar a caixa de correio, token resgatado do serviço REST de autenticação (classe TEST01.BO.REST.OAUTHTOKEN).

TEST01.Email.Service: Classe do Serviço POP3, essa classe deve ser criada normalmente no Studio com o adaptador EnsLib.EMail.InboundAdapter. Essa classe é responsável por coordenar todos os componentes criados. Devemos alterar o adaptador para TEST01.Email.InboundAdapter e modificar/adicionar o método onTask, que permite atualizar o token caso seja necessário. Para fins deste teste, deixamos um erro forçado "Prueba de Lectura" para não excluir os e-mails da conta do Exchange.

Finalmente, conseguimos estabelecer a conexão com a caixa de correio e foi possível processá-los para uso posterior.

link do OneDrive com as classes utilizadas: https://profcyc-my.sharepoint.com/personal/tclavero_profcyc_onmicrosoft_...

Este arigo é tradução para português de (Integrando correo outlook exchange con oAuth 2.0 en Intersystems IRIS 2020)[https://es.community.intersystems.com/post/integrando-correo-outlook-exc...

Artigo premiado em no "2º Concurso de Artículos Técnicos en Español" https://es.community.intersystems.com/post/segundo-concurso-de-art%C3%AD...

Não foi possível adicionar a referencia a https://es.community.intersystems.com/post/integrando-correo-outlook-exc... em Link para o post anterior, não deixe de conferir a versão original do artigo.

Discussão (0)1
Entre ou crie uma conta para continuar