No 4D v18 R6, 4D introduziu a autenticação OAuth 2.0 para aceder a e-mails através de transportadores IMAP, SMTP, ou POP3. Começando com 4D v19 R3, 4D continua a implementar o protocolo OAuth 2.0 e fornece uma forma de solicitar facilmente através da programação de um token da plataforma de identidade da Microsoft para se ligar ao API para o Microsoft 365.
HDI OAUTH2 Microsoft
Pré-requisitos
Antes de obter uma ficha da plataforma de identidade Microsoft, o primeiro passo é registar a sua aplicação no portal Azure. Estabelece uma relação de confiança entre a sua aplicação e a plataforma de identidade da Microsoft. A confiança é unidireccional: a sua aplicação confia na plataforma de identidade da Microsoft e não o contrário.
Este tutorial da Microsoft é um grande recurso para compreender como registar a sua aplicação no portal Azure.
O registo integra a sua aplicação com a plataforma de identidade da Microsoft e estabelece a informação que esta utiliza para obter fichas, incluindo:
- uma identificação de cliente: Um identificador único atribuído pela plataforma de identidade da Microsoft.
- um URI/URL Redirecto: Um ou mais pontos finais onde a sua aplicação receberá respostas da plataforma de identidade da Microsoft.
- um Client Secret: Uma senha ou um par de chaves públicas/privadas que a sua aplicação utiliza para autenticar com a plataforma de identidade da Microsoft. (necessário apenas ao obter acesso para um serviço)
obtendo uma ficha de acesso
Os tokens de acesso emitidos pela plataforma de identidade da Microsoft contêm informações que o Microsoft Graph, o API para Microsoft 365, utiliza para validar a pessoa que efectua a chamada e assegurar que têm as permissões adequadas para realizar a operação que estão a solicitar.
Para obter a sua ficha, basta utilizar o New OAuth2 provider com toda a informação fornecida durante o registo:
$param
:=New object()
http://127.0.0.1:50993/ .name:="Microsoft"$param$param .permission:="signIn"
$param .clientId:="7008ebf5-xxxx-xxxx"
$param .redirectURI:="https://outlook.office"
$param .
scope:=" .com/IMAP.AccessAsUser.All"
// Create new OAuth2 object authenticationMode
$oAuth2 :=New OAuth2 provider($param)
// Ask for a token
$token :=$oAuth2.getToken()
If ($token#Null)
// Using of the token to access emails over IMAP
IMAP authentication OAUTH2 $IMAPParameters :=New object
:=
$IMAPParameters .
// 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("Acesso negado ao servidor IMAP")
End if
End if
Este comando faz parte do novo componente 4D NetKit, cujas fontes e documentação podem ser encontradas no github.