Configurar a autenticação OAuth entre organizações do Exchange e do Exchange Online

Aplica-se a: Exchange Server 2013

O assistente de Configuração Híbrida configura automaticamente a autenticação OAuth entre as organizações do Exchange 2013 e Exchange Online. Se sua organização do Exchange 2013 contiver servidores exchange 2010 ou Exchange 2007, o assistente de Configuração Híbrida não configurará a autenticação OAuth entre as organizações locais e online do Exchange. Essas implantações continuam a usar o processo de relação de confiança de federação por padrão. No entanto, certos recursos do Exchange 2013 ficam totalmente disponíveis em sua organização apenas por meio do uso do novo protocolo de autenticação OAuth do Exchange.

O novo processo de autenticação OAuth do Exchange permite atualmente os seguintes recursos do Exchange:

  • Gerenciamento de Registros de Mensagens (MRM)
  • Descoberta eletrônica in-loco do Exchange
  • Arquivamento In-loco do Exchange

Recomendamos que todas as organizações mistas do Exchange 2013 configurem a autenticação do Exchange OAuth depois de executar o Assistente de Configuração Híbrida.

Importante

  • Se sua organização local estiver executando apenas servidores do Exchange 2013 com a Atualização Cumulativa 5 ou posterior instalada, execute o Assistente de Implantação Híbrida em vez de executar as etapas neste tópico.

  • Esse recurso do Exchange Server 2013 não é totalmente compatível com o Office 365 operado pelo 21Vianet na China e pode haver algumas limitações de recurso. Para obter mais informações, consulte Office 365 operado pela 21Vianet.

Do que você precisa saber para começar?

Dica

Está com problemas? Peça ajuda nos fóruns do Exchange. Visite os fóruns no Exchange Server.

Como você configura a autenticação OAuth entre suas organizações do Exchange local e do Exchange Online?

Etapa 1: criar os objetos do servidor de autorização para sua organização Exchange Online

Para este procedimento, você precisa especificar um domínio verificado para sua organização do Exchange Online. Ele deve ser o mesmo domínio usado como o domínio SMTP primário usado para as contas de email baseadas em nuvem. Esse domínio é chamado de <domínio> verificado no procedimento a seguir.

Execute o seguinte comando no Shell de Gerenciamento do Exchange (Exchange PowerShell) em sua organização local do Exchange:

New-AuthServer -Name "WindowsAzureACS" -AuthMetadataUrl "https://accounts.accesscontrol.windows.net/<your tenant coexistence domain>/metadata/json/1"
New-AuthServer -Name "evoSTS" -Type AzureAD -AuthMetadataUrl "https://login.windows.net/<your tenant coexistence domain>/federationmetadata/2007-06/federationmetadata.xml"

Observação

Em GCC High ou DoD, você precisa usar os seguintes comandos em vez disso:

New-AuthServer -Name "WindowsAzureACS" -AuthMetadataUrl "https://login.microsoftonline.us/<your tenant coexistence domain>/metadata/json/1"
New-AuthServer -Name "evoSTS" -Type AzureAD -AuthMetadataUrl "https://login.microsoftonline.us/<your tenant coexistence domain>/federationmetadata/2007-06/federationmetadata.xml"

Observação

O domínio de coexistência do locatário é do formulário contoso.mail.onmicrosoft.com

Etapa 2: habilitar o aplicativo parceiro para sua organização do Exchange Online

Execute o seguinte comando no Exchange PowerShell em sua organização local do Exchange.

Get-PartnerApplication |  ?{$_.ApplicationIdentifier -eq "00000002-0000-0ff1-ce00-000000000000" -and $_.Realm -eq ""} | Set-PartnerApplication -Enabled $true

Etapa 3: exportar o certificado de autorização local

Nesta etapa, você precisa executar um script do PowerShell no servidor do Exchange diretamente para exportar o certificado de autorização local, que é importado para sua organização Exchange Online na próxima etapa.

  1. Salve o seguinte texto em um script do PowerShell chamado, por exemplo, de ExportAuthCert.ps1.

    $thumbprint = (Get-AuthConfig).CurrentCertificateThumbprint
    if((test-path $env:SYSTEMDRIVE\OAuthConfig) -eq $false)
    {
       md $env:SYSTEMDRIVE\OAuthConfig
    }
    cd $env:SYSTEMDRIVE\OAuthConfig
    $oAuthCert = (dir Cert:\LocalMachine\My) | where {$_.Thumbprint -match $thumbprint}
    $certType = [System.Security.Cryptography.X509Certificates.X509ContentType]::Cert
    $certBytes = $oAuthCert.Export($certType)
    $CertFile = "$env:SYSTEMDRIVE\OAuthConfig\OAuthCert.cer"
    [System.IO.File]::WriteAllBytes($CertFile, $certBytes)
    
  2. No Exchange PowerShell em sua organização local do Exchange, execute o script do PowerShell criado na etapa anterior. Por exemplo:

    .\ExportAuthCert.ps1
    

Etapa 4: Carregar o certificado de autorização local para o ACS (Serviço de Microsoft Entra Controle de Acesso)

Em seguida, use o Microsoft Graph PowerShell para carregar o certificado de autorização local que você exportou na etapa anterior para Microsoft Entra Controle de Acesso Services (ACS). Se você não tiver o módulo instalado, abra uma janela Windows PowerShell como administrador e execute o seguinte comando:

Install-Module -Name Microsoft.Graph.Applications

Conclua as etapas a seguir após a instalação do Microsoft Graph PowerShell.

  1. Abra um workspace Windows PowerShell que tenha os cmdlets do Microsoft Graph instalados. Todos os comandos nesta etapa serão executados usando o Windows PowerShell conectado ao console do Microsoft Graph.

  2. Salve o seguinte texto em um script do PowerShell chamado, por exemplo, de UploadAuthCert.ps1.

     Connect-MgGraph -Scopes Application.ReadWrite.All
    
     $CertFile = "$env:SYSTEMDRIVE\OAuthConfig\OAuthCert.cer"
     $objFSO = New-Object -ComObject Scripting.FileSystemObject
     $CertFile = $objFSO.GetAbsolutePathName($CertFile)
     $cer = [System.Security.Cryptography.X509Certificates.X509Certificate2]::new($CertFile)
     $binCert = $cer.GetRawCertData()
     $credValue = [System.Convert]::ToBase64String($binCert)
     $ServiceName = "00000002-0000-0ff1-ce00-000000000000"
     $p = Get-MgServicePrincipal -Filter "AppId eq '$ServiceName'"
     $params = @{
     	keyCredentials = @{
     		type = "AsymmetricX509Cert"
     		usage = "Verify"
     		key = $credValue
     	}
     }
     Update-MgServicePrincipal -ServicePrincipalId $p.Id -BodyParameter $params
    
  3. Execute o script do PowerShell criado na etapa anterior. Por exemplo:

    .\UploadAuthCert.ps1
    
  4. Depois de iniciar o script, uma caixa de diálogo de credenciais é exibida. Insira as credenciais da conta de administrador de locatários em sua organização de Microsoft Entra Microsoft Online. Depois de executar o script, deixe o Windows PowerShell conectado à sessão do Microsoft Graph aberto. Você usará isso para executar um script do PowerShell na próxima etapa.

Etapa 5: registrar todas as autoridades de nome de host para seus pontos de extremidade HTTP internos e externos do Exchange local com Microsoft Entra ID

Você precisa executar o script nesta etapa para cada ponto de extremidade de acesso público em sua organização local do Exchange, incluindo URLs internas e externas para Autenticação Moderna Híbrida). Por exemplo, se o Exchange estiver disponível externamente em https://mail.contoso.com/ews/exchange.asmx, use o nome https://mail.contoso.comda entidade de serviço . Não há um limite para o registro de outras autoridades de nome de host externas.

Para confirmar os pontos de extremidade do Exchange em sua organização local, execute os seguintes comandos no Shell de Gerenciamento do Exchange:

Get-MapiVirtualDirectory | FL server,*url*
Get-WebServicesVirtualDirectory | FL server,*url*
Get-OABVirtualDirectory | FL server,*url*

Observação

O script a seguir exige que o Windows PowerShell conectado ao Microsoft Graph esteja conectado à sua organização do Microsoft 365, conforme explicado na etapa 4 da seção anterior.

  1. Salve o texto a seguir em um arquivo de script do PowerShell chamado, por exemplo, de RegisterEndpoints.ps1. Este exemplo usa um contoso.com. Substitua https://mail.contoso.com/ e https://autodiscover.contoso.com/ pela autoridade de nome de host apropriada para sua organização local do Exchange.

     $ServiceName = "00000002-0000-0ff1-ce00-000000000000";
     $x = Get-MgServicePrincipal -Filter "AppId eq '$ServiceName'"
     $ServicePrincipalUpdate =@(
        "https://mail.contoso.com/","https://autodiscover.contoso.com/"
     )
     Update-MgServicePrincipal -ServicePrincipalId $x.Id -ServicePrincipalNames $ServicePrincipalUpdate
    
  2. No Windows PowerShell conectado ao Microsoft Graph, execute o script Windows PowerShell que você criou na etapa anterior. Por exemplo:

    .\RegisterEndpoints.ps1
    
  3. Para verificar se todos os registros foram adicionados, execute o comando a seguir no Windows PowerShell conectado ao Microsoft Graph e procure https://namespace entradas nos resultados.

    Get-MgServicePrincipal -Filter "AppId eq '$ServiceName'" | select -ExpandProperty ServicePrincipalNames
    

Etapa 6: criar uma IntraOrganizationConnector de sua organização local para o Microsoft 365 ou Office 365

Você precisa definir um endereço de destino para suas caixas de correio hospedadas no Exchange Online. Esse endereço de destino é criado automaticamente quando sua organização do Microsoft 365 ou Office 365 é criada. Por exemplo, se o domínio da sua organização hospedado na organização do Microsoft 365 ou Office 365 for "contoso.com", seu endereço de serviço de destino será "contoso.mail.onmicrosoft.com".

Usando o Exchange PowerShell, execute o seguinte cmdlet em sua organização local:

$ServiceDomain = Get-AcceptedDomain | where {$_.DomainName -like "*.mail.onmicrosoft.com"} | select -ExpandProperty Name
New-IntraOrganizationConnector -name ExchangeHybridOnPremisesToOnline -DiscoveryEndpoint https://outlook.office365.com/autodiscover/autodiscover.svc -TargetAddressDomains $ServiceDomain

Etapa 7: criar uma IntraOrganizationConnector de sua organização do Microsoft 365 ou Office 365 para sua organização local do Exchange

Você precisa definir um endereço de destino para suas caixas de correio hospedadas na organização local. Se o endereço SMTP principal da sua organização estiver em "contoso.com", os endereços de destino estarão em "contoso.com".

Também é preciso definir o ponto final externo de Descoberta automática para sua organização local. Se sua empresa for "contoso.com", o ponto de extremidade de descoberta automática geralmente será um dos seguintes valores:

  • https://autodiscover.<your primary SMTP domain>/autodiscover/autodiscover.svc
  • https://<your primary SMTP domain>/autodiscover/autodiscover.svc>

Observação

Você pode usar o cmdlet Get-IntraOrganizationConfiguration no local e no Microsoft 365 ou Office 365 locatários para determinar os valores de ponto de extremidade necessários pelo cmdlet New-IntraOrganizationConnector.

Depois de se conectar ao Exchange Online PowerShell, substitua <your on-premises Autodiscover endpoint> e <your on-premises SMTP domain> com seus valores e execute o seguinte comando:

New-IntraOrganizationConnector -name ExchangeHybridOnlineToOnPremises -DiscoveryEndpoint <your on-premises Autodiscover endpoint> -TargetAddressDomains <your on-premises SMTP domain>

Etapa 8: Configure um AvailabilityAddressSpace para quaisquer servidores pré-Exchange 2013 SP1

Ao configurar uma implantação híbrida em organizações mais antigas do Exchange, você precisará de pelo menos um servidor do Exchange 2013 que esteja executando o Exchange 2013 SP1 ou posterior. O servidor do Exchange 2013 requer as funções de servidor acesso ao cliente e caixa de correio. O servidor do Exchange 2013 coordena as comunicações entre sua organização local do Exchange existente e a organização Exchange Online. É altamente recomendada a instalação de mais de um servidor do Exchange 2013 em sua organização no local para ajudar a aumentar a confiabilidade e a disponibilidade dos recursos de implantação híbrida.

No Exchange 2013 organizações com o Exchange 2010 ou Exchange 2007, recomendamos que todos os servidores front-end voltados para a Internet sejam servidores do Exchange 2013 Client Access executando o SP1 ou posterior. Todas as solicitações do Exchange Web Services (EWS) devem passar por um servidor de Acesso ao Cliente do Exchange 2013. Esse requisito inclui solicitações do Microsoft 365 para sua organização local do Exchange e solicitações de sua organização local do Exchange para o Microsoft 365. É importante que você tenha servidores de Acesso ao Cliente do Exchange 2013 suficientes para lidar com a carga de processamento e fornecer redundância de conexão. O número de servidores de Acesso ao Cliente necessários depende da quantidade média de solicitações EWS e varia de acordo com a organização.

Antes de concluir esta etapa, verifique se:

  • Os servidores híbridos de front-end são o Exchange 2013 SP1 ou superior.
  • Você tem uma URL de EWS externa exclusiva para os servidores Exchange 2013. A organização microsoft 365 ou Office 365 deve se conectar a esses servidores para que solicitações baseadas em nuvem para que os recursos híbridos funcionem corretamente.
  • Os servidores têm funções de servidor de Caixa de Correio e de Acesso para Cliente
  • Quaisquer servidores de Caixa de Correio e de Acesso para Cliente do Exchange 2010/2007 existentes têm a Atualização Cumulativa (CU) ou Service Pack (SP) mais recente aplicado.

Observação

Os servidores de Caixa de Correio do Exchange 2010/2007 podem continuar a usar os servidores de Acesso para Cliente do Exchange 2010/2007 para servidores Front-End para conexões de recursos não híbridos. Somente solicitações de recursos de implantação híbrida da organização microsoft 365 ou Office 365 precisam se conectar aos servidores do Exchange 2013.

Um AvailabilityAddressSpace deve ser configurado em servidores de Acesso ao Cliente pré-Exchange 2013 que aponta para o ponto de extremidade do Exchange Web Services do servidor de Acesso ao Cliente do Exchange 2013 SP1 local. Esse ponto de extremidade é o mesmo ponto de extremidade descrito na Etapa 5 ou pode ser determinado executando o seguinte cmdlet em seu servidor local de Acesso para Cliente do Exchange 2013 SP1:

Get-WebServicesVirtualDirectory | Format-List AdminDisplayVersion,ExternalUrl

Observação

Se as informações de diretório virtual forem retornadas de vários servidores, use o ponto de extremidade retornado para um servidor de Acesso para Cliente do Exchange 2013 SP1. Ele exibirá 15.0 (Build 847.32) ou superior para o parâmetro AdminDisplayVersion .

Para configurar o parâmetro AvailabilityAddressSpace, use o Exchange PowerShell e execute o seguinte cmdlet em sua organização local:

Add-AvailabilityAddressSpace -AccessMethod InternalProxy -ProxyUrl <your on-premises External Web Services URL> -ForestName <your Microsoft 365 or Office 365 service target address> -UseServiceAccount $True

Como saber se funcionou?

É possível verificar se a configuração do OAuth está correta usando o cmdlet Test-OAuthConnectivity. Este cmdlet verifica se os pontos de extremidade locais do Exchange e Exchange Online podem autenticar solicitações entre si com êxito.

Para verificar se a sua organização local do Exchange pode se conectar ao Exchange Online, execute o seguinte comando no Exchange PowerShell em sua organização local:

Test-OAuthConnectivity -Service EWS -TargetUri https://outlook.office365.com/ews/exchange.asmx -Mailbox <On-Premises Mailbox> -Verbose | Format-List

Para verificar se sua organização Exchange Online pode se conectar com êxito à sua organização local do Exchange, conecte-se ao Exchange Online PowerShell e execute o seguinte comando:

Test-OAuthConnectivity -Service EWS -TargetUri <external hostname authority of your Exchange On-Premises deployment>/metadata/json/1 -Mailbox <Exchange Online Mailbox> -Verbose | Format-List

Então, como exemplo,

Test-OAuthConnectivity -Service EWS -TargetUri `https://mail.contoso.com/metadata/json/1` -Mailbox ExchangeOnlineBox1 -Verbose | Format-List

Importante

Você pode ignorar o erro "O endereço SMTP não tem nenhuma caixa de correio associada a ele". É importante que o parâmetro ResultTask retorne um valor de êxito. Por exemplo, a última seção da saída de teste deve ler:

ResultType: Success Identity: Microsoft.Exchange.Security.OAuth.ValidationResultNodeId IsValid: True ObjectState: New

Dica

Está com problemas? Peça ajuda nos fóruns do Exchange. Visite os fóruns no Exchange Server.