Artículo
· 27 feb, 2023 Lectura de 4 min

Integrando correo outlook exchange con oAuth 2.0 en Intersystems IRIS 2020

Introducción

En este artículo, voy a contarles cómo logré realizar la integración en la plataforma Intersystems IRIS 2020 de una cuenta de correo Outlook Exchange con oAuth 2.0. Aunque esta tarea puede parecer sencilla, la realidad es que Intersystems IRIS 2020 no cuenta con los componentes necesarios para lograrlo. En mi caso, utilice código de la versión 2022 (puedes descargar la versión de evaluación) y lo adapté a la versión 2020. Si bien es factible actualizar entre versiones con el instalador IRIS 2022, esto toma semanas de pruebas antes de realizar el cambio en productivo, y la integración no podía esperar, es por esto que se optó por tomar componentes de IRIS 2022 y copiarlos/adaptarlos a la versión 2020.

Antecedentes

Para aquellos que no lo sepan, Microsoft deprecó la autenticación básica de las cuentas de Exchange Online (https://learn.microsoft.com/es-es/lifecycle/announcements/basic-auth-dep...), dado este escenario, cualquier adaptador de correo entrante (POP3 en el caso de IRIS) o saliente (SMTP en IRIS) requiere ahora autenticación OAuth 2.0 ( https://learn.microsoft.com/es-es/exchange/client-developer/legacy-proto... ). Como bien sabemos, OAuth es un protocolo de autorización que permite que una aplicación, en este caso IRIS, pueda acceder a los recursos protegidos de un usuario en un servicio en línea (como Facebook o Google), sin necesidad de compartir la contraseña del usuario. En lugar de eso, el usuario autoriza a la aplicación a acceder a sus recursos mediante un token de acceso que es emitido por el servicio en línea. El protocolo OAuth se utiliza ampliamente en la autenticación y autorización de aplicaciones web y móviles.

Buscando en la documentación de IRIS encontré que la versión 2022 tiene disponible de manera nativa integraciones de oAuth.

Mientras que la versión 2020  no tiene aún disponible estas opciones:

 

Solución

Navegando por las clases de IRIS 2022, específicamente la versión "IRIS for Windows (x86-64) 2022.1.2 (Build 574U)" pude encontrar 2 clases que contenían el código necesario para conectar con un token de autenticación: %Net.POP3 y EnsLib.EMail.InboundAdapter, comparé ambas versiones, entre IRIS 2020 e IRIS 2022 y comencé a realizar pruebas de conexión.

Luego de varios ensayos logramos realizar la integración creando y configurando las siguientes clases.

TEST01.BO.REST.OAUTHTOKEN : Esta clase es la encargada de realizar la solicitud REST para la obtención del token, en este caso de Microsoft. Se llama desde el servicio POP3 desde el método onTask cada vez que requiere un nuevo token.

 

TEST01.Email.POP3 : Esta clase es una copia de la clase %Net.POP3 de iris 2020, pero se debe modificar el método ConnectPort y agregar un nuevo parámetro "AccesToken", además se deben agregar el código (que se puede rescatar desde la misma clase pero de la versión 2022) que utiliza el token para conectar con el servidor de correo. 

TEST01.Email.InboundAdapter : Esta clase es una copia de EnsLib.EMail.InboundAdapter, pero se deben hacer 2 modificaciones, lo primero es modificar la propiedad Mail Service por "Property MailServer As TEST01.Email.POP3;", y además se debe modificar el método on Task de tal forma de que utilicé la global que almacena el token necesario para a la casilla de correo, token resctado desde el servicio de REST de autenticación (clase TEST01.BO.REST.OAUTHTOKEN).

TEST01.Email.Service : Clase del Servicio POP3, esta clase debe ser una creada normalmente desde Studio con el adaptador EnsLib.EMail.InboundAdapter. Esta clase es la que coordina todos los componentes creados, se debe cambiar el adaptador a TEST01.Email.InboundAdapter. y modificar/agregar el  método on Task que permite actualizar el token en caso de ser necesario, para efectos de esta prueba se dejó forzado un error para no eliminar los correos desde la cuenta exchange (Error forzado "Prueba de Lectura").

Finalmente se logró la conexión a la casilla de correo y fue posible procesarlos para su uso.

Espero que este artículo les sirva a aquellos que deben conectar a servicios POP3 con IRIS y no pueden acceder o actualizar a la versión 2022.

Si este artículo les fue de ayuda les pido que puedan votar en el 2º Concurso de Artículos Técnicos.

Les dejaré además un link de onedrive con las clases utilizadas:  https://profcyc-my.sharepoint.com/:u:/g/personal/tclavero_profcyc_onmicr...

o pueden descargar el proyecto desde:

https://gitlab.com/tclavero/iris2020outlookpop3oauth.git

Saludos Cordiales

Tomás Clavero Vega.

Comentarios (2)3
Inicie sesión o regístrese para continuar

Gracias por compartir Tomás. Muy interesante... seguro que ayudará a muchos que no puedan esperar a la acualización de su versión de IRIS y tengan que utilizar Exchange. Si es posible, te pediría que compartieses el código como proyecto en GitHub... puede resultar más fácil para otros si quieren aportar correcciones o mejoras.