Condividi tramite


Outlook non si connette quando si usa l'autenticazione moderna

Sintomi

Si consideri lo scenario seguente:

  • L'organizzazione ha un ambiente Microsoft Exchange ibrido.
  • L'individuazione automatica punta a Exchange Server locale.
  • Si dispone di un client MSI di Microsoft Outlook 2016 Professional.

In questo scenario, quando si tenta di aggiungere l'account di posta elettronica di Exchange Online a Outlook, la richiesta di autenticazione moderna viene vuota dopo aver immesso le credenziali di Exchange Online. Pertanto, non è possibile procedere con l'aggiunta dell'account al profilo di Outlook predefinito.

Motivo

Quando si immettono le credenziali, il client Outlook si connette a Exchange Online per richiedere un token OAuth per il principio della risorsa di individuazione automatica locale. Tuttavia, l'autenticazione non riesce perché l'entità risorsa è:

  • Assente nell'elenco degli SPN del tenant di Microsoft Entra
  • In uno stato di non validità all'interno del tenant di Microsoft Entra

Risoluzione

Per aggiungere l'account di posta elettronica di Exchange Online a Outlook, utilizzare una delle risoluzioni seguenti.

Risoluzione 1

Utilizzare una versione a portata di clic di Outlook.

Nota: le versioni a portata di clic di Outlook determinano se esiste un account utente in Exchange Online, come descritto nel passaggio 4 dell'implementazione di Outlook 2016 di Individuazione automatica.

Risoluzione 2

Usare la procedura seguente per aggiungere il principio di risorsa di individuazione automatica mancante all'elenco SPN nel tenant di Microsoft Entra:

  1. Determinare il nome principale della risorsa usando uno dei metodi seguenti:

    • Cercare nei log di accesso di Microsoft Entra il messaggio di errore di accesso seguente:

      "status": {  
         "errorCode": 500011,  
         "failureReason": "The resource principal named <resource principal name> was not found in the tenant named <tenant name>. This can happen if the application has not been installed by the administrator of the tenant or consented to by any user in the tenant. You might have sent your authentication request to the wrong tenant."
      

      Ottieni il nome principale risorsa dal messaggio di log.

    • Quando si immettono le credenziali per aggiungere l'account di posta elettronica di Exchange Online, usare un analizzatore del protocollo di rete per acquisire il traffico di rete. Cercare nel traffico di rete acquisito una richiesta POST con tutti gli elementi seguenti:

      • URL dell'endpoint che contiene oauth2/token HTTP/1.1

      • Codice di stato della risposta HTTP 400 (richiesta non valida)

      • Messaggio di errore nel corpo della risposta simile al messaggio seguente:

        {"error":"invalid_resource","error_description":"AADSTS500011: The resource principal named <resource principal name> was not found in the tenant named <tenant name>. This can happen if the application has not been installed by the administrator of the tenant or consented to by any user in the tenant. You might have sent your authentication request to the wrong tenant.
        

        Ottenere il nome principale della risorsa dal messaggio di errore.

    Un esempio del nome principale della risorsa è https://autodiscover.contoso.com.

  2. Aggiungere il nome principale dell'entità di risorsa all'elenco SPN nel tenant di Microsoft Entra seguendo la procedura descritta nel Passaggio 5: Registrare tutte le autorità dei nomi host per gli endpoint HTTP di Exchange interni ed esterni.

  3. Verificare che il nome principale della risorsa sia incluso nell'elenco dei nomi SPN in Microsoft Entra ID.

    1. Eseguire i cmdlet seguenti per installare e connettersi a Microsoft Graph:

      Install-Module Microsoft.Graph.Applications
      Import-Module Microsoft.Graph.Applications
      Connect-MgGraph -Scopes Application.Read.All
      

      Quando viene richiesto, accedere per concedere il consenso.

    2. Eseguire il cmdlet seguente per elencare gli SPN in Microsoft Entra ID:

      $ServiceName = "00000002-0000-0ff1-ce00-000000000000"
      Get-MgServicePrincipal -Filter "AppId eq '$ServiceName'" | Select-Object -ExpandProperty ServicePrincipalNames | Sort-Object
      

Suggerimento

Per verificare che gli endpoint Exchange Server e Exchange Online locali possano autenticare correttamente le richieste l'una dall'altra, usare il cmdlet Test-OAuthConnectivity .