Nella versione 4D v18 R6, 4D ha introdotto l’autenticazione OAuth 2.0 per accedere alle e-mail attraverso i trasportatori IMAP, SMTP o POP3. A partire da 4D v19 R3, 4D continua a implementare il protocollo OAuth 2.0 e fornisce un modo per richiedere facilmente programmando un token dalla piattaforma di identità Microsoft per connettersi all’API per Microsoft 365.
HDI OAUTH2 Microsoft
Prerequisiti
Prima di ottenere un token dalla piattaforma di identità Microsoft, il primo passo è registrare l’applicazione nel portale Azure. In questo modo si stabilisce una relazione di fiducia tra l’applicazione e la piattaforma di identità Microsoft. La fiducia è unidirezionale: l’applicazione si fida della piattaforma di identità Microsoft e non viceversa.
Questo tutorial di Microsoft è un’ottima risorsa per capire come registrare l’applicazione nel portale Azure.
La registrazione integra l’applicazione con la piattaforma di identità Microsoft e stabilisce le informazioni che utilizza per ottenere i token, tra cui:
- un ID cliente: Un identificatore unico assegnato dalla piattaforma di identità Microsoft.
- un URI/URL di reindirizzamento: Uno o più endpoint dove l’applicazione riceverà le risposte dalla piattaforma di identità Microsoft.
- a Client Secret: una password o una coppia di chiavi pubbliche/private che l’applicazione utilizza per autenticarsi con la piattaforma di identità Microsoft. (richiesto solo quando si ottiene l’accesso a un servizio).
ottenere un token di accesso
I token di accesso emessi dalla piattaforma di identità Microsoft contengono informazioni che Microsoft Graph, l’API per Microsoft 365, utilizza per convalidare il chiamante e garantire che abbia le autorizzazioni adeguate per eseguire l’operazione richiesta.
Per ottenere il token, è sufficiente utilizzare il comando New OAuth2 provider con tutte le informazioni fornite durante la registrazione:
$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("Accesso negato al server IMAP")
End if
End if
Questo comando fa parte del nuovo componente 4D NetKit, i cui sorgenti e la cui documentazione sono disponibili su github.