Il modulo PowerShell per Exchange Online consente di gestire le impostazioni del server di posta elettronica di Office 365 dalla riga di comando, tramite appositi cmdlet powershell specifici. Tipicamente questo processo è suddiviso in tre fasi durante il quale all’utente viene richiesto di inserire le credenziali di Microsoft 365, di fornire le impostazioni di connessione necessarie, permettendo successivamente di importare i cmdlet di Exchange Online nella sessione locale di Windows PowerShell per poterli usare, senza aver installato nel client alcun componente che parli direttamente con Exchange, ma permettendo di richiamare quelli esposti nel cloud.
La modalità classica di esecuzione dei comandi per la connessione a Exchange Online è la seguente:
Da Powershell:
$Credenziali = Get-Credential -> Comparirà la finestra di dialogo per l’inserimento utente e password
$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/ -Credential $Credenziali -Authentication Basic -AllowRedirection
Import-PSSession $Session -DisableNameChecking
Tramite questa modalità il modello di autenticazione è quello Basic: questa modalità in quanto poco efficace dal punto di vista delle sicurezza e non in grado di supportare le funzionalità avanzate come ad esempio la Multi Factor Authentication. Microsoft ha annunciato che gradualmente andrà a “disabilitare” la possibilità di utilizzare la Basic Auth, a favore della più nuova e recente Modern Authentication.
Sui tenant recenti di default l’autenticazione è già impostata per utilizzare l’MA. Ecco quindi che in caso ci si voglia connettere ad un tenant 365 con MA abilitato potrei incorrere in questo messaggio di errore:
New-PSSession : [outlook.office365.com] Connessione al server remoto outlook.office365.com non riuscita con il seguente messaggio di errore: Accesso negato.
Per risolvere questo tipo di problema è necessario utilizzare il modulo di Exchange Online PowerShell V2 per connettersi a PowerShell di Exchange Online, in grado di utilizzare la Modern Authentication come meccanismo di autenticazione e di conseguenza anche MFA.
Tramite il modulo PowershellGet, già incluso ad esempio in Windows 10, Windows Server 2016 e 2019 e in generale a tutti i sistemi dotati di Windows Management Framework 5.0 e superiori è possibile automatizzare il download del modulo versione 2 per la Powershell di Exchange 365 Online.
Successivamente tramite l’esecuzione del comando powershell:
Import-Module ExchangeOnlineManagement; Get-Module ExchangeOnlineManagement
saremo in grado di accedere ai nuovi CMDLET in formato EXO, in modalità Modern Auth:
Come stringa di connessione potremo quindi utilizzare il nuovo modulo per autenticarci tramite Modern Auth, scegliendo una delle due modalità:
Connect-ExchangeOnline –Credential $Credenziali -ShowProgress $true (per la connessione con MFA)
Connect-ExchangeOnline -UserPrincipalName <UPN> -ShowProgress $true (per la connessione con MFA)
Et voilà, ora siamo autenticati e connessi al nostro Tenant Microsoft 365 in modalità sicura tramite la Modern Authentication.