En 4D v18 R6, 4D introdujo la autenticación OAuth 2.0 para acceder a los correos electrónicos a través de transportadores IMAP, SMTP o POP3. A partir de 4D v19 R3, 4D continúa implementando el protocolo OAuth 2.0 y proporciona una forma de solicitar fácilmente mediante la programación de un token desde la plataforma de identidad de Microsoft para conectarse a la API de Microsoft 365.

PRERREQUISITOS

Antes de obtener un token de la plataforma de identidad de Microsoft, el primer paso es registrar su aplicación en el portal de Azure. Establece una relación de confianza entre su aplicación y la plataforma de identidad de Microsoft. La confianza es unidireccional: su aplicación confía en la plataforma de identidad de Microsoft y no al revés.

Este tutorial de Microsoft es un gran recurso para comprender cómo registrar su aplicación en Azure Portal.

El registro integra su aplicación con la plataforma de identidad de Microsoft y establece la información que utiliza para obtener tokens, que incluye:

  • a ID de cliente : un identificador único asignado por la plataforma de identidad de Microsoft.
  • un URI / URL de redireccionamiento : uno o más puntos finales donde su aplicación recibirá respuestas de la plataforma de identidad de Microsoft.
  • un secreto de cliente : una contraseña o un par de claves pública / privada que utiliza su aplicación para autenticarse con la plataforma de identidad de Microsoft. (requerido solo cuando se obtiene acceso a un servicio )

OBTENER UN TOKEN DE ACCESO

Los tokens de acceso emitidos por la plataforma de identidad de Microsoft contienen información que Microsoft Graph, la API de Microsoft 365, usa para validar a la persona que llama y asegurarse de que tenga los permisos adecuados para realizar la operación que solicita.

Para obtener su token, solo necesita usar el New OAuth2 provider comando con toda la información proporcionada durante el registro:

$param:=New object()
$param.name:=»Microsoft»
$param.permission:=»signedIn»
$param.clientId:=»7008ebf5-xxxx-xxxx»
$param.redirectURI:=»http://127.0.0.1:50993/»
$param.scope:=»https://outlook.office.com/IMAP.AccessAsUser.All»
// Create new OAuth2 object
$oAuth2:=New OAuth2 provider($param)
// Ask for a token
$token:=$oAuth2.getToken()
If ($token#Null)
  // Using of the token to access emails over IMAP
  $IMAPParameters:=New object
  $IMAPParameters.authenticationMode:=IMAP authentication OAUTH2
  // Token received from the server
  $IMAPParameters.accessTokenOAuth2:=$token.token.access_token
  // e-mail address of the user for whom the token was created
  $IMAPParameters.user:=$user
  $IMAPParameters.host:=»Outlook.office365.com»
  $IMAPTransporter:=IMAP New transporter($IMAPParameters)
  $status:=$IMAPTransporter.checkConnection()
  If (Not($status.success))
     ALERT(«Access denied to IMAP server»)
  End if
End if

Este comando es parte del nuevo componente 4D NetKit , cuyas fuentes y documentación se pueden encontrar en github .